| Commit message (Collapse) | Author | Age |
| | |
|
| | |
|
| |
|
|
|
|
| |
We can retire the old approach that used separate allocations,
and all of the supporting code. This also gives us a more
natural signature for the end point initializations.
|
| |
|
|
|
|
|
|
|
| |
This also fixes a possible race in the listener that may cause
connections to be dropped incorrectly, if the connection arrives
before the common layer has posted an accept request.
Instead we save the connection and potentially match later, like
we do for the other protocols that need to negotiate.
|
| | |
|
| | |
|
| |
|
|
|
| |
The pair is still a separate allocation, but this overall does
reduce the number of allocations as well as a failure paths.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
This follows a pattern we started earlier with IPC.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This allows us to explicitly stop streams, dialers, and listeners,
before we start tearing down things. This hopefully will be useful
in resolving use-after-free bugs in http, tls, and websockets.
The new functions are not yet documented, but they are
nng_stream_stop, nng_stream_dialer_stop, and nng_stream_listener_stop.
They should be called after close, and before free. The close
functions now close without blocking, but the stop function is
allowed to block.
|
| | |
|
| |
|
|
|
| |
While here renamed a couple of symbols to avoid conflation with
the supplemental websocket functions of the same name.
|
| | |
|
| |
|
|
|
|
| |
Inproc doesn't have any real need for action here, as it's simple,
but the stub implementation will let us remove the check in the
common code layer.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
This refactors a lot of the IPC code to hopefully address various
hangs on shutdown, etc. The problem is that named pipes are not
terrifically reliable when it comes to aborting ConnectNamedPipe.
Additionally there were some logic errors in some of our code that
left things rather brittle.
Ultimately this all needs to be replaced with UNIX domain sockets
which are superior in many ways.
|
| |
|
|
|
| |
This allows us to eliminate some extra reference counting and
reaping related complexity.
|
| |
|
|
|
|
|
| |
This eliminates the need for separate reap operations, and it
also eliminates a few failure modes, further simplifying the code.
This is the first transport to get this treatment. The others will follow.
|
| |
|
|
|
|
| |
If an error occurs, the application gets to know about it. There
cannot be external factors that cause us to spin for memory, since
this is not accessible via the network.
|
| |
|
|
| |
While here initialize the message to avoid valgrind complaints.
|
| |
|
|
| |
This covers both the ttransport and the supplemental layers.
|
| | |
|
| |
|
|
|
| |
This is not needed for this, but it is the only transport that does
not have it, and adding it simplifies logic in the common code.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
TCPv6 not done yet since that needs special work to be conditionalized.
Also tcpsupp remains to be converted.
|
| |
|
|
|
|
|
|
| |
This actually represents a conversion of the transport tests implemented
in Convey terms to NUTS. As part of this, have implemented a simple
round trip performance test, using PAIR.
The rest of the transport tests will shortly be converted to this as well.
|
| | |
|
| |
|
|
| |
This was centralized in the stream layer a while ago.
|
| | |
|
| |
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
Also, make it clearer that TLS keys and certificates can only
be set once on a configuration. (mbedTLS makes this confusing!)
This mutual test is only fully validated on mbed, because wolfSSL
seems to not properly validate this in many configurations.
|
| |
|
|
| |
Also add a test case for mismatch verify.
|
| | |
|
| |
|
|
|
| |
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.
|
| |
|
|
|
| |
This means that most URLs can now be used without any allocations
needed. It eliminates some failure paths.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|