summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* fixes #393 panic on illumos - epoll assertion errorGarrett D'Amore2018-05-06
| | | | | | | | This replaces the epoll support with proper illumos/SunOS port events. The port event support is structured so that it actually is superior to epoll and kqueue, because it avoids a single master lock on the poller. In the future we will explore this for macOS and Linux pollers.
* fixes #396 illumos doesn't build (missing NNG_PLATFORM_POSIX ON)Garrett D'Amore2018-05-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | fixes #397 Need to cast zoneid fixes #395 sun is predefined on illumos/Solaris fixes #394 alloca needs to #include <alloca.h> fixes #399 Cannot use SVR4.2 specific msghdr fixes #402 getpeerucred needs a NULL initialized ucred fixes #403 syntax error in posix_tcp - attempt to return void fixes #407 illumos getegid wrong fixes #406 nni_idhash_count is dead code fixes #404 idhash typedef redeclared fixes #405 warning: newline not last character in file This is basically a slew of related bug fixes required to make this work on illumos. Note that the fixes are not "complete", because more work is required to support port events given that epoll is busted on illumos. We also fixed a bunch of things that aren't actually "bugs" per se, but really just warnings. Silencing them makes things better for everyone. Apparently not all compilers are equally happy with redundant (but otherwise identical) typedefs; we use structs in some places instead of shorter type names to silence these complaints. Note that IPC permissions (the mode bits on the socket vnode) are not validated on SunOS systems. This change includes documentation to reflect that.
* fixes #401 timer overflow error in conveyGarrett D'Amore2018-05-06
|
* fixes #383 Would like peerid for IPCGarrett D'Amore2018-05-03
| | | | | We offer uid, gid, process id, and even zone id where we have them. Docs and tests are provided.
* Fix failures in pipe test on Windows.Garrett D'Amore2018-05-03
| | | | | | | | | | | The problem was that with inproc we could wind up calling the completion callback before actually returning the dialer ID to the structure, leading to false comparison failures. Creating the dialer and listener in separate steps ensures that we have IDs in place for them before any callback might be issued. Note that this was a bug in the test logic only, and not a problem with the underlying implementation.
* fixes #389 Need pipe notification callbacksGarrett D'Amore2018-05-03
| | | | | | | | This adds a new pipe event notification API (callbacks called on either pipe add or remove), including both tests and docs. Also supporting APIs to get the socket or endpoint associated with a pipe are included (tested and documented as well.)
* fixes #390 panic in reqstress websocketGarrett D'Amore2018-05-02
|
* Remove stale advice about file descriptors.Garrett D'Amore2018-05-02
|
* Markup fixes, ensuring links are colored properly.Garrett D'Amore2018-05-01
| | | | | | | | | It turns out that when creating cross references, we need to make any text styling (generally literal characters) outside of the link, to avoid having the styling override the link color. (We prefer to have links colored for ease of use.) While here a few other markup, and actual content, errors were fixed.
* Some very minor pipe implementation cleanups.Garrett D'Amore2018-05-01
| | | | | We already closed the pipe before putting it on the reaplist, so don't do it again.
* fixes #381 Want comparators for various typesGarrett D'Amore2018-05-01
|
* fixes #387 Document that IPC paths must be absoluteGarrett D'Amore2018-04-30
|
* fixes #384 Add NN_PROTOCOL and relatedGarrett D'Amore2018-04-30
|
* fixes #6 Security attributes supportGarrett D'Amore2018-04-30
| | | | | | | | | | fixes #382 Permissions support for IPC on POSIX This adds support for permission management on Windows and POSIX systems. There are two different properties, and they are very different. Tests and documentation are included.
* fixes #379 httpbin.org no longer accepts clear HTTPGarrett D'Amore2018-04-28
|
* Add nonblocking test (test case for bug 346).Garrett D'Amore2018-04-28
|
* fixes #375 integer types are error proneGarrett D'Amore2018-04-26
| | | | | | | | | | | | | | This change converts the various integer types like nng_socket in the public API to opaque structures that are passed by value. Basically we just wrap the integer ID. This "hack" give us strong type checks by the compiler (yay!), at the expense of not being able to directly use these as numbers (so comparisions for example don't work, and neither does initialization to zero using the normal method. Comparison of disassembly output shows that at least with the optimizer enabled there is no difference in the compiler output between using a structure or an integral value.
* fixes #105 Want NNG_OPT_TCP_NODELAY optionGarrett D'Amore2018-04-26
| | | | fixes #106 TCP keepalive tuning
* fixes #373 inproc_thr sometimes fails with connection refusedGarrett D'Amore2018-04-25
|
* fixes #347 Legacy option NN_SNDBUF and NN_RCVBUF in bytes not messagesGarrett D'Amore2018-04-25
|
* Bump version to 0.9.0.0.9.0Garrett D'Amore2018-04-24
|
* Document context support for surveyor.Garrett D'Amore2018-04-24
|
* fix a number of cppcheck complaints (not all)Garrett D'Amore2018-04-24
|
* Eliminate unused varable.Garrett D'Amore2018-04-24
|
* fixes #367 Kill off Travis CI finallyGarrett D'Amore2018-04-24
|
* fixes #366 Cache ninja-build for AppVeyorGarrett D'Amore2018-04-24
| | | | fixes #365 Probably we don't need asciidoctor at build time
* fixes #364 kill off nni_msgq_set_best_effort()Garrett D'Amore2018-04-24
|
* fixes #342 Want Surveyor/Respondent context supportGarrett D'Amore2018-04-24
| | | | | | | | | | | | | | | | fixes #360 core should nng_aio_begin before nng_aio_finish_error fixes #361 nng_send_aio should check for NULL message fixes #362 nni_msgq does not signal pollable on certain events This adds support for contexts for both sides of the surveyor pattern. Prior to this commit, the raw mode was completely broken, and there were numerous other bugs found and fixed. This integration includes *much* deeper validation of this pattern. Some changes to the core and other patterns have been made, where it was obvioius that we could make such improvements. (The obviousness stemming from the fact that RESPONDENT in particular is very closely derived from REP.)
* fixes #368 context options could be emptyGarrett D'Amore2018-04-24
|
* fixes #363 context option plumbing missingGarrett D'Amore2018-04-24
|
* fixes #346 nng_recv() sometimes acts on null `msg` pointerGarrett D'Amore2018-04-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | This closes a fundamental flaw in the way aio structures were handled. In paticular, aio expiration could race ahead, and fire before the aio was properly registered by the provider. This ultimately led to the possibility of duplicate completions on the same aio. The solution involved breaking up nni_aio_start into two functions. nni_aio_begin (which can be run outside of external locks) simply validates that nni_aio_fini() has not been called, and clears certain fields in the aio to make it ready for use by the provider. nni_aio_schedule does the work to register the aio with the expiration thread, and should only be called when the aio is actually scheduled for asynchronous completion. nni_aio_schedule_verify does the same thing, but returns NNG_ETIMEDOUT if the aio has a zero length timeout. This change has a small negative performance impact. We have plans to rectify that by converting nni_aio_begin to use a locklesss flag for the aio->a_fini bit. While we were here, we fixed some error paths in the POSIX subsystem, which would have returned incorrect error codes, and we made some optmizations in the message queues to reduce conditionals while holding locks in the hot code path.
* fixes #355 Possible use after free in REPGarrett D'Amore2018-04-17
| | | | | | | | | While here I've added some code that should help us backtrack on a crash, by linking back to the pipe from the context when we are queued on that pipes sendq. I'm not sure if we've ever seen these or not, but it could explain certain infrequent crashes we think we've seen.
* fixes #344 nn_poll() legacy API missingGarrett D'Amore2018-04-16
| | | | | | | | | | | | This includes the test from legacy libnanomsg and a man page. We have refactored the message queue notification system so that it uses nni_pollable, leading we hope to a more consistent system, and reducing the code size and complexity. We also fixed the size of the NN_RCVFD and NN_SNDFD so that they are a SOCKET on Windows systems, rather than an integer. This addresses 64-bit compilation problems.
* fixes #350 Incorrect compat error code from nn_setsockoptGarrett D'Amore2018-04-14
|
* Fix socket option levels (compat options).Garrett D'Amore2018-04-14
|
* fixes bad address tests in tcp and tls (#345)toppk2018-04-14
| | | | | | | * 127.0.0.1.32 is treated as a hostname, returns EAI_NODATA on my fedora 27 box * since this is not in POSIX, and deprecated from some libc resolvers protect with an ifdef
* fixes #308 Close can blockGarrett D'Amore2018-04-14
| | | | | | | | | | | | | | | | | | | | Ultimately, this just removes the support for lingering altogether. Based on prior experience, lingering has always been unreliable, and was removed in legacy libnanomsg ages ago. The problem is that operating system support for lingering is very inconsistent at best, and for some transports the very concept is somewhat meaningless. Making things worse, we were never able to adequately capture an exit() event from another thread -- so lingering was always a false promise. Applications that need to be sure that messages are delivered should either include an ack in their protocol, use req/rep (which has an ack), or inject a suitable delay of their own. For things going over local networks, an extra delay of 100 msec should be sufficient *most of the time*.
* fixes #303 Flesh out compatible API docsGarrett D'Amore2018-04-14
|
* Remove some unused variables.Garrett D'Amore2018-04-12
|
* Use contexts for new async demo.Garrett D'Amore2018-04-12
|
* icons for github.Garrett D'Amore2018-04-12
|
* Minor cross reference fixes for v0.8.0.Garrett D'Amore2018-04-12
|
* Bump version to 0.8.0.0.8.0Garrett D'Amore2018-04-12
|
* fixes #341 Want REST API gateway demoGarrett D'Amore2018-04-11
|
* We need to declare the TLS structure here.Garrett D'Amore2018-04-11
| | | | | Applications which may not even be using TLS should not have to know about the TLS configuration structure.
* Minor format fix for raw mode header.Garrett D'Amore2018-04-11
|
* Update doc with information about contexts.Garrett D'Amore2018-04-10
|
* fixes #338 possible SIGPIPE on LinuxGarrett D'Amore2018-04-10
|
* Fix valgrind warning in assert.Garrett D'Amore2018-04-10
| | | | | | | This technically doesn't need the lock, as we're only trying to catch a possible problem during development rather than in the field (and this should never occur), but the false positive in valgrind obscures other possible errors, so leave it in the lock.
* Eliminate possible data race on file descriptor.Garrett D'Amore2018-04-10
| | | | Turns out that shutdown is sufficient for most needs.