| Commit message (Collapse) | Author | Age |
| ... | |
| |
|
|
| |
Similar to the other identities, this simplifies code a bit.
|
| |
|
|
|
|
| |
Socket options were a little awkward, and these are core properties
of the socket. Few if any applications need these. This also avoids
some dynamic allocations.
|
| | |
|
| |
|
|
|
| |
Support for setting or getting sockaddrs on sockets or on
contexts makes little sense, since these are always transport specific.
|
| |
|
|
|
|
|
|
|
|
| |
These options are removed entirely, and their functionality is now
available via special functions, `nng_socket_get_send_poll_fd` and
`nng_socket_get_recv_poll_fd`, making these first class methods on
the socket.
This eliminates a bit of wasteful code, and provides type safety
for these methods.
|
| |
|
|
|
| |
Essentially, we forgot to dereference as uint8_t *, which can
lead to some suprises if these are misused.
|
| | |
|
| |
|
|
| |
This was not really used or useful.
|
| |
|
|
|
|
|
|
|
|
|
| |
We don't need nng_stream_set_addr nor nng_stream_set_ptr.
These methods are simply not useful for streams, which have
their properties established at creation time.
Arguably in fact, all of nng_stream_set_* could go away --
the only properties it is implemented for are TCP keepalive and
nodelay tuning, and those should be reasonably set by the
creator of the stream.
|
| |
|
|
|
|
| |
TLS is not really merely supplemental anymore. Its pretty fundamental.
Let's make it accessible directly. This will allow us to define
typed property access functions.
|
| |
|
|
|
|
|
|
| |
This is a breaking change.
TLS configuration changes are to be made using TLS configuration
objects, and then set on a listener or dialer with NNG_OPT_TLS_CONFIG.
This should be a bit less racy, and allows for simpler code.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
Transport specific options should be configured on the end point.
This has the most impact for TLS, as TLS dialers and listeners will
need to be allocated apriori, to configure TLS options.
Some legacy tests were removed... we're going to remove the legacy
libnanomsg compatibility layer anyway.
|
| |
|
|
|
| |
This should help the compiler enforce checks, and may result
in better optimizations.
|
| |
|
|
|
| |
This starts by updating UDP to use this approach, since we already
have a convenient lock. We should look at doing the same for other stats.
|
| |
|
|
|
| |
Unfortunately for now we have the struct itsel,f but it can become
mostly empty.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
We are finding that on darwin its very easy for us to lose UDP messages
as the socket buffer appears to be depressingly small.
|
| |
|
|
|
|
| |
There were several bugs here, including use-after-free,
a problem when the copy limit was exceeded, and uninitialized
receive thresholds.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
If one tries to sleep indefinitely, a sign bug leads to constantly
waking calls, which causes an infinite cycle in the expire loop.
|
| |
|
|
|
|
| |
It turns out that for now this results in early wakeups, due to another
bug in the aio framework. But when that bug is fixed, this bug will
lead to hangs when redialing.
|
| |
|
|
|
| |
Actually this test appears to be broken everywhere, and the only
reason it ever worked is that we took > 50 ms to context switch.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This also allows to remove most of the transport headers.
Only zerotier.h sticks around, and only for now. (We expect to
eject it into a separate module.)
|
| |
|
|
|
|
|
|
| |
XPG8 defines getentropy() as the only good source for random numbers.
However, real world use a bit more nuanced. On BSD systems, we would
prefer to use arc4random as it avoids unnecessary system calls. On
Linux however, getentropy is implemented in terms of getrandom, and should
be used directly when available.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the initial implementation of UDP transport.
It does in order guarantees (and consequently filters duplicates),
but it does not guarantee delivery. The protocol limits payloads
to 65000 bytes (minus headers for SP), but you really want to
keep it to much less -- probably best for short messages that within
a single MTU to avoid IP fragmentation and reassembly.
This is unicast only for now (although there are plans for some
support for multicast and broadcast as well as being able to
perform automatic mesh building, but that will be in following work.
Additional tunables are coming. This is only lightly tested at
this point, and should be considered experimental. Its also undocumented.
|
| |
|
|
|
| |
This is expected to be useful for new transports where we need
the sock address to properly reply (think UDP with multicast).
|
| |
|
|
| |
This will be used for some follow up work (UDP).
|
| |
|
|
|
|
|
| |
This adds endian awareness at compile time, and defines some little
endian versions of some macros. We antiicpate making more use of
little endian in new protocols to reduce the "endian tax", as nearly
every modern system is little endian these days.
|
| |
|
|
|
| |
This will be used in UDP. It also lets us reduce some unnecessary
code paths for redundant library initialization.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
This requires using a supporting version of Mbed TLS.
We have to use PSA crypto for TLS 1.3.
|