| Commit message (Collapse) | Author | Age |
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
Make sure *everything* is drained before proceeding all the way
to deallocation.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Probably other subsystems should get the same treatment. We need
to basically start the process of shutting down so that subsystems
know to cease operation before we rip memory out from underneath them.
This ensures that no new operations can be started as well, once we
have begun the process of teardown.
We also enhanced the completion of sleep to avoid some extra locking
contention, since the expiration *is* the completion.
Includes a test for this case.
|
| |
|
|
|
| |
We do not want to let operations restart if we're in the process of shutting
down. This ensures that they get a reasonable hard failure.
|
| |
|
|
|
|
|
|
|
|
| |
This starts by using this for the nni_pipe, but we will use it
for the other primary objects as well. This should simplify
the tear down and hopefully eliminate some races.
It does mean that pipe destruction goes through an additional
context switch, for now at least. This shouldn't be on the hot
data path anyway.
|
| |
|
|
|
|
| |
This API exists to support tests and similar cases where port 0 is
used to choose a dynamic port. Once the port is bound, and an actual
value is known, it can be patched in using this API.
|
| |
|
|
| |
This fixes a possible failure condition on teardown.
|
| | |
|
| |
|
|
|
| |
While here we added a test for nng_cv_wake1 to demonstrate it does
not fall afoul of the thundering herd.
|
| |
|
|
|
| |
Temporarily we have removed access to the peer alt names, but
that was never used and was not tested (it also didn't work with WolfSSL.)
|
| |
|
|
|
| |
This hopefully ensures that we have good typed functions instead
of just passing around pointers blithely.
|
| |
|
|
|
|
|
|
| |
This is now replaced with nng_listener_set_security_descriptor
and nng_stream_listener_set_security_descriptor functions. We
may elect to remove these entirely, but for named pipe users they
are probably still quite useful. Moving towards UNIX domain sockets
would obsolete this functionality.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
This allows a URL object to be used for dialing, which may
be easier than using a string if you already have the URL object.
|
| |
|
|
|
| |
The idea is to allow nng_dialer_create_url() and such to avoid having
to reparse a URL that we already have.
|
| | |
|
| |
|
|
|
| |
This means that most URLs can now be used without any allocations
needed. It eliminates some failure paths.
|
| | |
|
| |
|
|
| |
This permits removal of an extra bit of clean up.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This is done so that we can provide transport specific logic
for URL parsing later (we're going to want this for ZeroTier
for example.)
|
| | |
|
| |
|
|
| |
This is intended to replace NNG_OPT_URL.
|
| | |
|
| |
|
|
| |
This is a step on cleaning up our logic around NNG_OPT_URL.
|
| |
|
|
|
| |
While TCP and UDP port numbers are 16-bits, ZT uses a larger (24-bit)
port number.
|
| | |
|
| |
|
|
| |
The inline parsing will be used internally to avoid some allocations.
|
| | |
|
| |
|
|
|
| |
This provides safety by ensuring that applications do not
depend on the size or layout of nng_url itself.
|
| |
|
|
| |
the separation of nni_url and nng_url.
|
| |
|
|
|
|
|
| |
This eliminates most (but not all) of the dynamic allocations
associated with URL objects. A number of convenience fields
on the URL are removed, but we are able to use common buffer
for most of the details.
|
| |
|
|
|
|
|
| |
Also expose nng_url_sprintf() for users who need it.
This avoids some need to do dynamic memory on some things. Soon
the entirety of nng_url will be allocation free in the usual case.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
The idea here is to reduce the dynamic allocations used for
URLs, and also the back and forth with parsing begin strings
and port numbers. We always resolve to a port number, and
this is easier for everyone.
The real goal in the long term is to eliminate dynamic allocation
of the URL fields altogether, but that requires a little more
work. This is a step in the right direction.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
This functionality was provided principally for libnanomsg compatibility.
This saves some memory and eliminates some pointless functionality.
While here, updated the socket options documentation to remove references
to options already removed.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
Applications must now call nng_init(), but they can supply
a set of parameters optionally. The code is now safe for
multiple libraries to do this concurrently, meaning nng_fini
no longer can race against another instance starting up.
The nni_init checks on all public APIs are removed now.
|
| |
|
|
| |
This is simpler, and more reliable than using socket options.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Don't emit the log for date change unless we are in debug mode.
Emit a newline when starting a new NUTS test.
Change the default log level - it was too noisy.
|
| |
|
|
|
|
|
| |
The framework for saving and replaying socket options was left
over, and should not be used. But we do need to send the initial
socket options to endpoints when creating them, so we have support
for that in a cleaner fashion that does not require memory allocations.
|