| Commit message (Collapse) | Author | Age |
| | |
|
| |
|
|
|
|
|
|
|
|
| |
fixes #1224 wss fails on IPV6 address
This fixes bugs and inconsistencies in the way addresses are
handled for HTTP (and consequently websocket). The Host:
address line needs to look at numeric IPs and treat wildcards
as if they are not specified, and needs to understand the IPv6
address format using brackets (e.g. [::1]:80).
|
| |
|
|
|
|
| |
This was first detected as a stack overrun, but in actuality the
problem could have lead to corruption of TLS messages due to
prematurely recording transmit completion.
|
| |
|
|
| |
- nng_msg_clear should only clear the message body and not the head. Add test to verify
|
| | |
|
| |
|
|
|
| |
This also affects the respondent protocol. Examination of the other
protocols did not turn up any evidence of the same issue.
|
| | |
|
| |
|
|
|
| |
Also, addressed a number of Clang-tidy complaints. Potential hangs
in close addressed as well.
|
| |
|
|
|
| |
This also starts the test framework NNG streams, so that we can
test those more directly.
|
| |
|
|
| |
fixes #1219 nng_close occasionally hang on Windows
|
| | |
|
| | |
|
| |
|
|
|
| |
This uses a maximum 64-byte header and should avoid allocations and
cache misses, leading to a small performance boost overall.
|
| | |
|
| |
|
|
|
|
|
|
| |
This introduces a new CMake option, NNG_MAX_TASKQ_THREADS, with
a default value of 16. The number of taskq workers will generally
be calculated as vcpu * 2. This new value, if not zero, sets an
upper bound. Note that the value should be at least two, in order
to ensure no deadlocks occur.
|
| |
|
|
|
|
|
|
| |
This introduces support for an external wolfSSL plugin, and generally
creates the framework for pluggable TLS implementations.
The wolfSSL engine is provided via an external module (git submodule),
available either under a GPLv3 license or a commercial license.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This should make survey a little faster (which may be of benefit).
But it will also enable us to eliminate one of the checks in the
message queue code (#814), making everything else go faster.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
This bumps the coverage for survey up. While here fixed a few nits
in req test, and removed the now pointless legacy survey and respond tests.
|
| |
|
|
| |
- Default tree handler behavior is now non-exclusive
- Add 'longest uri first' ordering for http handlers
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
fixes #1160 Consider limiting maximum hop count to 15
fixes #1098 Maximum maxTTL should be compile time defined
This doesn't expose the max-MaxTTL in the CMakeList.txt -- there
is really no reason anyone should be changing it. This does not
yet inline the message header into the nni_msg_t, but it is my
intention to do so soon, and eliminate most of the conditional cases
for failure on inserting into the header.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
This can depend completely on the underlying TCP stack deciding
to segment -- for example if we get context away for a bit, the
stack in kernel can decide to go ahead and close the segment.
There isn't anything useful that this test is testing for, and it
breaks randomly in CI.
|
| |
|
|
|
|
|
| |
This only addresses the newly rewitten compat_tcp test, but it
sets the groundwork for the other tests, so that when they are
updated to the new acutest.h they can use the new marry code to
establish connections cleanly and safely.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This introduces reference counting on messages to reduce the data copies.
This should have a marked improvement when moving large messages through
the system, or when publishing to many subscribers. For some transports,
when using large messages, the copy time can be the dominant factor.
Note that when a message is actually shared, inproc will still perform
an extra copy in order to ensure that it can modify the headers.
This will unfortunately always be the case with REQ, as the REQ protocol
keeps a copy of the original message so it can retry.
|
| |
|
|
|
|
| |
In addition, the message queue code is rather heavy weight, so this may
make the inproc code a bit leaner. It also makes backpressure conditions
much more reliable since it now is completely unbuffered.
|
| |
|
|
|
|
|
|
|
|
|
| |
This allows --reqrep0, --pair0, --pair1, and --bus0 to be used with
the inproc_lat, and also inproc_thr (though only with pair options for
that for now). It also introduced --url for both programs to support
testing over different transports.
Also, we no longer pass out the header for REQ reply -- that is
an error, and led to some unfortunate failures when reusing the
message.
|
| | |
|
| |
|
|
|
|
|
| |
We've also finished fleshing out the statistics for pairv1, addressed a
possible race around the TTL, and added additional test cases to validate
things. We also have tightened up the send logic to ensure we do not
send a bad message on the wire (drop the malformed message on the send side).
|
| |
|
|
|
|
|
|
| |
This correctly moves the entire protocol header for XREQ and XRESPONDENT
protocols to the message header (not the body). This is where it should
always have been. There is some small chance that applications which were
coded to parse the header from the body will break. We don't think there
are any such applications in use.
|
| |
|
| |
- Fixes #751
|
| |
|
|
|
|
|
| |
Specifically, we don't need to read the atomic value each loop
iteration. We can just get it when a message is first received,
and then use that value. This should make receiving through proxies
a little more efficient.
|
| | |
|
| | |
|
| |
|
|
|
| |
Also, add a test to cover the RESPOND protocol. This gets about
95% of the coverage.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
The new tests are more exhaustive, and cover everything. We also
added a case for testing that posting messages that we didn't
subscribe too doesn't raise the pollable flag.
|
| | |
|
| |
|
|
|
|
|
| |
This gets near 100% coverage of the PUB/SUB protocols.
The remaining uncovered bits will need to have a mock protocol that
runs slower, so that we can inject both back pressure, and also so
that we can inject "erroroneous" messages.
|
| | |
|
| |
|
|
|
|
|
|
| |
This also fixes a possible bug if mixing poll file descriptors and
contexts on the same socket. Most folks are unlikely to ever run
into this bug.
At this point the REQ/REP coverage is nearly complete (over 95%).
|