summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* fixes #1210 Undefined reference to InterlockedAddNoFence (mingw64)Garrett D'Amore2020-02-26
|
* fixes #1171 message header could be inlined in the message structureGarrett D'Amore2020-02-26
| | | | | This uses a maximum 64-byte header and should avoid allocations and cache misses, leading to a small performance boost overall.
* fixes #1201 Unexpected error return code: NNG_ENOMEMGarrett D'Amore2020-02-25
|
* fixes #1202 More than 120 threads was started by NNGGarrett D'Amore2020-02-24
| | | | | | | | 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.
* fixes #1005 TLS 1.3 supportGarrett D'Amore2020-02-23
| | | | | | | | 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.
* Fix typos in commentsEvgeny Ermakov2020-02-13
|
* Survey occasionally does not cancel properly.Garrett D'Amore2020-02-07
|
* fixes #1189 Extract and deprecate polyamorous modeGarrett D'Amore2020-02-07
|
* fixes #814 mq_get_error should goGarrett D'Amore2020-02-06
|
* Convert SURVEY to use lmq and avoid message queues.Garrett D'Amore2020-02-06
| | | | | | 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.
* inline the pipe aios for pair0Garrett D'Amore2020-02-05
|
* Fix possible use after freeEvgeny Ermakov2020-02-05
|
* more compile fixes for legacy atomicsGarrett D'Amore2020-02-05
|
* fixes #1182 v1.2.5 build fails gcc 4.8Garrett D'Amore2020-02-05
|
* Survey test rewrite.Garrett D'Amore2020-02-05
| | | | | 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.
* Add possibility to explicitly set a tree handler as exclusive (#1158)Robert Bielik2020-01-27
| | | | - Default tree handler behavior is now non-exclusive - Add 'longest uri first' ordering for http handlers
* fixes #1176 Unable to build latestGarrett D'Amore2020-01-27
|
* fixes #1169 survey and xsurvey could use message cloningGarrett D'Amore2020-01-20
| | | | | | | | | | | 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.
* fixes #1162 req_test needs to have better retry testsGarrett D'Amore2020-01-20
|
* tcp batch test is fragile.Garrett D'Amore2020-01-20
| | | | | | | | | 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.
* fixes #1163 compat tests are very brittleGarrett D'Amore2020-01-20
| | | | | | | 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.
* fixes #1156 Message cloning could help reduce copies a lotGarrett D'Amore2020-01-20
| | | | | | | | | | | | 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.
* fixes #1159 inproc could skip message queueGarrett D'Amore2020-01-20
| | | | | | 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.
* fixes #1154 perf programs could use options to select different protocolsGarrett D'Amore2020-01-19
| | | | | | | | | | | 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.
* fixes #1145 nng_msg options should be removedGarrett D'Amore2020-01-19
|
* fixes #1151 minor pairv1 optimizations possibleGarrett D'Amore2020-01-19
| | | | | | | 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).
* fixes #1142 raw mode use of message headers is inconsistentGarrett D'Amore2020-01-18
| | | | | | | | 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.
* Fix HTTP server root URI handling (#1140)Robert Bielik2020-01-18
| | | - Fixes #751
* TTL reads could be fewer.Garrett D'Amore2020-01-18
| | | | | | | 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.
* xrespond should use atomic TTL.Garrett D'Amore2020-01-18
|
* inproc can use msg_header_clear to save a branch.Garrett D'Amore2020-01-16
|
* RESPOND needs to use atomic for TTL.Garrett D'Amore2020-01-16
| | | | | Also, add a test to cover the RESPOND protocol. This gets about 95% of the coverage.
* XSURVEY test suite added.Garrett D'Amore2020-01-13
|
* Give time for REQ backpressure to ease in test suite.Garrett D'Amore2020-01-13
|
* Remove the old PUB/SUB tests.Garrett D'Amore2020-01-13
| | | | | | 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.
* fixes #1131 (openindiana) compile errorGarrett D'Amore2020-01-12
|
* Add PUB/SUB test suite.Garrett D'Amore2020-01-12
| | | | | | | 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.
* fixes #1132 Masking error in LMQ leads to corruptionGarrett D'Amore2020-01-12
|
* Test coverage improvements for REQ/REP.Garrett D'Amore2020-01-12
| | | | | | | | 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%).
* XREQ and others race on TTL.Garrett D'Amore2020-01-11
| | | | | | | | | | The TTL in these cases should have been atomic. To facilitate things we actually introduce an atomic int for convenience. We also introduce a convenience nni_msg_must_append_u32() and nni_msg_header_must_append_u32(), so that we can eliminate some failure tests that cannot ever happen. Combined with a new test for xreq, we have 100% coverage for xreq and more coverage for the other REQ/REP protocols.
* fixes #1124 data race on ttl in xrepGarrett D'Amore2020-01-09
|
* fixes #1094 Consider in-lining task and aioGarrett D'Amore2020-01-08
| | | | | This only does it for rep, but it also has changes that should increase the overall test coverage for the REP protocol
* fixes #1117 task structures should be inlinedGarrett D'Amore2020-01-06
|
* fixes #1116 task_reap can be eliminatedGarrett D'Amore2020-01-05
|
* fixes #1112 POSIX pollq finalizers could be simplerGarrett D'Amore2020-01-05
| | | | | | | | | | | We reap the connections when closing, to ensure that the clean up is done outside the pollq thread. This also reduces pressure on the pollq, we think. But more importantly it eliminates some complex code that was meant to avoid deadlocks, but ultimately created other use-after-free challenges. This work is an enabler for further simplifications in the aio/task logic. While here we converted some potentially racy locking of the dialers and reference counts to simpler lock-free reference counting.
* fixes #1096 inline all 16 iovs in aio (also consider reducing -- to 8?)Garrett D'Amore2020-01-04
| | | | fixes #1097 aio prov_data not used at all
* fixes #1105 pollable can be inlined, and use atomicsGarrett D'Amore2020-01-04
| | | | | This also introduces an nni_atomic_cas64 to help with lock-free designs. Some mechanical renaming was done in some of the protocols for spelling.
* fixes #1104 move allocation of protocol objects to common coreGarrett D'Amore2020-01-03
| | | | fixes #1103 respondent could inline backtrace
* More REP protocol coverage tests.Garrett D'Amore2020-01-02
|
* Limit the batch size, and set some timeouts for compat_tcp.Garrett D'Amore2020-01-02
|