aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Add tests to validate backpressure vs best effort for pairv1.Garrett D'Amore2017-08-11
|
* Fail to another stream on default (no pipe requested).Garrett D'Amore2017-08-11
|
* Add a test for default pipe in polyamorous mode.Garrett D'Amore2017-08-11
|
* Fix TTL handling for pair1 protocol; more tests.Garrett D'Amore2017-08-11
|
* Change coverage range: 50% maxing out at 85%.Garrett D'Amore2017-08-11
|
* Windows fixes; especially idempotent init/fini.Garrett D'Amore2017-08-11
| | | | | | | This fixes one major problem, which was that if nni_fini() was called once on Windows, it would not be further possible to call nni_init(). While here fixed a few compilation issues.
* Test support for pairv1 including polyamorous mode.Garrett D'Amore2017-08-11
|
* Posix pollq fini is not properly idempotent.Garrett D'Amore2017-08-11
| | | | | This creates a use-after-free bug if nni_fini() is run, then new sockets are created.
* Add 32-bit accessors for messages, and tests for them.Garrett D'Amore2017-08-11
|
* Leaking poll fds.Garrett D'Amore2017-08-11
| | | | | | | We never set the fd->sn_init member, causing new fds to be allocated on each request for a new pollfd, and causing old ones to leak, and worse may be even to not get notified. While here, we arrange for a bit richer testing against the various options.
* Use updated gcov tool.Garrett D'Amore2017-08-11
|
* Verify errno handling works; use table driven approach.Garrett D'Amore2017-08-10
|
* Constructors missing from Windows DLLs.Garrett D'Amore2017-08-10
|
* Restore the device test.Garrett D'Amore2017-08-10
|
* Unify the msg API.Garrett D'Amore2017-08-10
| | | | | | | | | | | | | This makes the operations that work on headers start with nni_msg_header or nng_msg_header. It also renames _trunc to _chop (same strlen as _trim), and renames prepend to insert. We add a shorthand for clearing message content, and make better use of the endian safe 32-bit accessors too. This also fixes a bug in inserting large headers into messages. A test suite for message handling is included.
* Add new PAIR_V1 protocol.Garrett D'Amore2017-08-10
| | | | | | | | | | The PAIR_V1 protocol supports both raw and cooked modes, and has loop prevention included. It also has a polyamorous mode, wherein it allows multiple connections to be established. In polyamorous mode (set by an option), the sender requests a paritcular pipe by setting it on the message. We default to PAIR_V1 now.
* Thundering herd kills performance.Garrett D'Amore2017-08-10
| | | | | | | | | | | | | | A little benchmarking showed that we were encountering far too many wakeups, leading to severe performance degradation; we had a bunch of threads all sleeping on the same condition variable (taskqs) and this woke them all up, resulting in heavy mutex contention. Since we only need one of the threads to wake, and we don't care which one, let's just wake only one. This reduced RTT latency from about 240 us down to about 30 s. (1/8 of the former cost.) There's still a bunch of tuning to do; performance remains worse than we would like.
* fixes #47 compat_reqttls fails sometimesGarrett D'Amore2017-08-09
| | | | fixes #23 Restore the old idhash logic for sockets
* Fix problems found in Windows build.Garrett D'Amore2017-08-09
|
* fixes #48 tcp sometimes fails to get a portGarrett D'Amore2017-08-09
|
* Undo header include reordering (clang, breaks windows).Garrett D'Amore2017-08-09
|
* fixes #44 open protocol by "name" (symbol) instead numberGarrett D'Amore2017-08-09
| | | | | | | | | | | | | | fixes #38 Make protocols "pluggable", or at least optional This is a breaking change, as we've done away with the central registered list of protocols, and instead demand the user call nng_xxx_open() where xxx is a protocol name. (We did keep a table around in the compat framework though.) There is a nice way for protocols to plug in via an nni_proto_open(), where they can use a generic constructor that they use to build a protocol specific constructor (passing their ops vector in.)
* fixes #37 Make transports pluggableGarrett D'Amore2017-08-08
| | | | | | | | | | | | We automatically register inproc, TCP, and IPC. We can add more now by just calling nni_tran_register(). (There is no unregister support.) This requires transports to have access to the AIO framework (so that needs to be something we consider), and a few nni_sock calls to get socket options. Going forward we should version the ops vectors, and move to pushing down transport options from the framework via setopt calls -- there is no reason really that transports need to know all these.
* Simplify initialization, fix error in closed TCP endpoint.Garrett D'Amore2017-08-08
|
* Updates to Travis CI configuration, serialize testing (TCP).Garrett D'Amore2017-08-08
| | | | | | | | | | | | | | | | For now we have problems with TCP tests racing against each other and this can lead to failures due to port use. In the old nanomsg repo we assigned several different port numbers on the command line, but we lack that here generally. However, we feel that parallel testing is of little merit; its better to build dedicated stress tests if that is what is desired. We also use the matrix stuff a bit more sensibly, only installing packages we actually use. This will likely lead to shorter startup times. Finally we cleaned up the environment so that we have sane defaults for most environment variables.
* Use inproc to minimize timeouts on TCP (Windows).Garrett D'Amore2017-08-08
|
* Fix compilation warnings.Garrett D'Amore2017-08-08
|
* Increase the timeouts for compat_reqttl (context switches?)Garrett D'Amore2017-08-08
| | | | | Also, we need to nn_close(), because the close can reasonably race against nn_term(), causing false test failures.
* Added nn_compat code for option handling, fixed other bugs.Garrett D'Amore2017-08-08
| | | | | | | Hop counts for REQ were busted (bad TTL), and imported the compat_reqtll test. At the same time, added code to nn_term to shut down completely, discarding sockets. (Note that some things, such as globals, may still be left around; that's ok.)
* compatible pipeline test makes bad timing assumptions.Garrett D'Amore2017-08-07
| | | | | | | There are no guarantees about message ordering when multiple sockets are involved. Adding a delay doesn't fix the lack of a guarantee, but makes it sufficiently unlikely to be violated to suit our test purposes.
* Don't clear the AIO provider data in finish.Garrett D'Amore2017-08-07
| | | | | | The finish routine can race against an asynchronous cancellation, so we must not clear the data pointer, or we can wind up with a NULL pointer dereference.
* Add some more compatibility tests; fix surveyor compat bug.Garrett D'Amore2017-08-07
| | | | | | | | | We noticed a bug in the surveyor handling of the options; this fixes that. At the same time, we noticed a race condition in the setting of the error for future calls, a short sleep seems to cure it. This distinction (ESTATE vs ETIMEDOUT) is pretty annoying, and it would be better to have a different way to handle it. More work here is warranted.
* We use NNG_ETIMEDOUT from msgq now.Garrett D'Amore2017-08-07
|
* Fix crash when using legacy send API with NN_MSG.Garrett D'Amore2017-08-07
| | | | | | | | | We introduced the compat_msg.c from the old msg.c in the nanomsg repo. While here, we found that the handling for send() was badly wrong, by a level of indirection. We simplified the code to so that nn_send() and nn_recv() are simple wrappers around the nn_sendmsg() and nn_recvmsg() APIs (as in old nanomsg). This may not be quite as fast, but it's more likely to be correct and reduces complexity.
* Address possible leak on send failure.Garrett D'Amore2017-08-07
|
* Fix a few pointer vs. character errors found by gcc 7.Garrett D'Amore2017-08-07
|
* Remove unused idhash_reclaim.Garrett D'Amore2017-08-07
|
* Remove some dead code; msg queue depths are always unsigned.Garrett D'Amore2017-08-07
|
* Subsystem initialize is idempotent; simplify cleanup.Garrett D'Amore2017-08-07
|
* We don't want to report on test coverage of our test programs!Garrett D'Amore2017-08-07
|
* Updated information, and a codecov badge.Garrett D'Amore2017-08-07
|
* Compiler switches need to be a string.Garrett D'Amore2017-08-07
|
* Problem was module path override, I think.Garrett D'Amore2017-08-07
|
* More coverage tweaks (I hope).Garrett D'Amore2017-08-07
|
* Fix travis YAML.Garrett D'Amore2017-08-07
|
* Richer CI support on Travis, including code coverage.Garrett D'Amore2017-08-07
| | | | We use codecov.io; this seems to work well.
* No, I'm not using Sublime Text anymore, and nobody else cares.Garrett D'Amore2017-08-07
|
* Add ability to override clang format, including disable.Garrett D'Amore2017-08-07
| | | | To disable check, specify CLANG_FORMAT as off, no, or skip.
* Fix warninsg about size types found in 64-bit windows build.Garrett D'Amore2017-08-05
|
* Generate 64-bit on 64-bit builds.Garrett D'Amore2017-08-05
|