| Commit message (Collapse) | Author | Age |
| | |
|
| | |
|
| |
|
|
|
|
| |
These are new functions that replace `NNG_OPT_SUBSCRIBE` and
`NNG_OPT_UNSUBSCRIBE`. They are provided here as a transition
aid before those options are removed in NNG 2.0.
|
| |
|
|
|
|
|
|
|
|
| |
These functions were added in the main branch for NNG 2.0, and
we add them here to facilitate converting any code that happened
to use the options (`NNG_OPT_PROTO`, `NNG_OPT_PROTONAME`,
`NNG_OPT_PEER`, `NNG_OPT_PEERNAME`, and `NNG_OPT_RAW`.
Its unlikely that many applications need this, but providing these
as a transition aid may help applications start adopting new APIs now.
|
| |
|
|
| |
This is in preparation for the wolfSSL integration.
|
| | |
|
| |
|
|
|
|
| |
This also adds an SP layer transport test for TLS, based on the TCP
test but with some additions; this test does not cover all the edge
cases for TLS, but it does at least show how to use it.
|
| |
|
|
|
|
| |
NNG_TRANSPORT_ZEROTIER is enabled.
It seems that there are typo in the struct type naming. And the wrong function name in `nni_sp_zt_register` that will cause link error.
|
| |
|
|
|
|
|
|
| |
This seems to alleviate the use after free crashes, although it
does not seem like it should. Current theory is that this closes
the handle ensuring that it is unregistered from the I/O subsystem,
thus preventing callbacks from firing and referring to objects that
have been freed.
|
| |
|
|
|
|
|
|
| |
When closing pipes, we defer them to be reaped, but also leave
them in the match list where they might be picked up by ep_match,
or leak. It's best to reap these proactively and ensure that they
are not allowed to life longer once they have errored during the
negotiation phase.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* Add nng_str_sockaddr to get string representation of socket address.
* Added nng_log_get_level() is meant to allow users to obtain the
current level and avoid some possibly expensive operations just
to collect debugging information when debugging is not in effect.
We use a custom logger for NUTS, and this fits within the NUTS
test framework well, so that if -v is supplied we get more content.
All tests now get this by default.
|
| |
|
|
|
| |
Also while here, remove unused sockaddr members from some structs.
This should save a bit of memory for servers with a lot of conns.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
This also checks if the build system has the definitions for AF_INET6, which might
help in some embedded IPv4 only settings.
The resolver test is enhanced to include a check for IPv6 enabled in the kernel.
IPv6 support is enabled by default, of course.
|
| |
|
|
|
| |
This also adds a HUGE test for REP using socket so that we can
discriminate failures that might exist using sockets instead of inproc.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
This includes a manual page documenting the entire set of
functions in one step. The hash is 64-bit based for now, to
be maximally flexible. An internal 32-bit convenience for the
common internal use is also provided (not public).
The public API includes a test suite.
|
| |
|
|
|
| |
Again, this was racy code, and not well tested. Set this option
before starting the endpoint if you need to be sure.
|
| |
|
|
| |
This code was not well tested, and is racy as well.
|
| |
|
|
|
| |
This eliminates some code. A test is added as well, so this should
help with coverage.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This transport only listens, and creates connections when
the application calls setopt on the lister with NNG_OPT_SOCKET_FD,
to pass a file descriptor. The FD is turned into an nng_stream,
and utilized for SP. The protocol over the descriptor is identical
to the TCP protocol (not the IPC protocol).
The options for peer information are borrowed from the IPC transport,
as they may be useful for these purposes.
This includes a test suite and full documentation.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This eliminates the req protocols use of nni_timer (and setting
a single timer node per request. This was problematic because it
devolves into O(n^2) as we wind up inserting timer nodes and having
to scan the list for the timer node.
The solution is to use a single scan - stop worrying about insertion,
but instead use a coarse granularity timer (defaults to 1 second)
for retries. Then do the O(n) scan just once per interval.
A new option, NNG_OPT_REQ_RESENDTICK, can be used to change the tick
interval for cases (like unit tests) where more fine grained timing
is required.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Credit goes to Wu Xuan (@willwu1217) for diagnosing and proposing
a fix as part of #1695. This approach takes a revised approach
to avoid adding extra memory, and it also is slightly faster as we
do not need to update both pointers in the linked list, by reusing
the reap node.
As part of this a new internal API, nni_aio_completions, is introduced.
In all likelihood we will be able to use this to solve some similar
crashes in other areas of the code.
|
| |
|
|
|
|
|
| |
In some places, we use ifdef, and others if.
This normalizes for always using ifdef, so we can compile when
this macro is not defined.
|
| | |
|
| |
|
|
|
|
| |
Windows (#1562)"
This reverts commit 1892e1d6d102d1fbd37e2c3bbb59dc35d81c8b33.
|
| |
|
|
| |
Finish receive aio on tcp
pipe close
|
| |
|
|
| |
(#1562)
|
| |
|
|
| |
This function needs to be pretty much identical between PAIR v0 and
v1, it was missing just the call to release the pollable resources.
|
| |
|
|
| |
Signed-off-by: Andrey Vostrikov <andrey.vostrikov@cogentembedded.com>
Co-authored-by: Andrey Vostrikov <andrey.vostrikov@cogentembedded.com>
|
| |
|
|
|
|
|
| |
None of these changes are actual security bugs, but GitHub's
scanner reports false positives at Critical severity for them.
(There are a number of complaints from that scanner, many of
which we do not necessarily agree with.)
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
This should give significant performance boosts to anyone using this
protocol. Buffering on both the send and receive side is supported,
with a default buffer size of 16 messages. This should help provide
a reasonable default case for most users.
While here updated the test for bus to much more complete
NUTS style test framework, with increased coverage.
|
| |
|
|
|
| |
This makes these functions entirely bullet proof, and eliminates
yet more error handling cases.
|
| |
|
|
|
| |
This allows us to make nni_lmq_init() non-failing. (Although
the buffer size requested at initialization might not be granted.)
|
| |
|
|
|
| |
This eliminates more failure paths, and brings us still closer
to eliminating the possibility of failure during socket init.
|
| | |
|
| |
|
|
| |
This also arranges to clean up the maps at nng_fini time.
|
| |
|
|
|
|
| |
This eliminates some run-time initialization, moving it to compile time.
Additional follow up work will expand on this to simplify initialization
and reduce the need for certain locks.
|
| |
|
|
| |
fixes #1535 Desire nng_ctx_sendmsg and nng_ctx_recvmsg
|
| | |
|
| | |
|
| | |
|