summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* fixes #605 NNI_ALLOC_STRUCT/NNI_ALLOC_STRUCTS should zero memoryGarrett D'Amore2018-07-24
|
* Modified code to explicitly set hints.ai_socktype passed to getaddrinfo(). ↵Mike Bush2018-07-24
| | | | On QNX, specifying a numeric servname while leaving ai_socktype unspecified would result in EAI_SERVICE.
* Added QNX build support for cmake.Mike Bush2018-07-24
|
* fixes #604 pipe free does not finalize cvGarrett D'Amore2018-07-20
|
* fixes #601 pipe destroy can fail to close pipeGarrett D'Amore2018-07-18
|
* fixes #595 mutex leak and other minor errors in TCPGarrett D'Amore2018-07-18
| | | | | | | | | | | | | | | | fixes #596 POSIX IPC should move away from pipedesc/epdesc fixes #598 TLS and TCP listeners could support NNG_OPT_LOCADDR fixes #594 Windows IPC should use "new style" win_io code. fixes #597 macOS could support PEER PID This large change set cleans up the IPC support on Windows and POSIX. This has the beneficial impact of significantly reducing the complexity of the code, reducing locking, increasing concurrency (multiple dial and accepts can be outstanding now), reducing context switches (we complete thins synchronously now). While here we have added some missing option support, and fixed a few more bugs that we found in the TCP code changes from last week.
* fixes #592 reqctx test has a raceGarrett D'Amore2018-07-16
|
* fixes #591 incorrect reuse of server instances by websocketGarrett D'Amore2018-07-16
| | | | | This also arranges for server shutdown to be handled using the reaper, leading to more elegant cleanup.
* fixes #589 tsan found racesGarrett D'Amore2018-07-16
|
* fixes #523 dialers could support multiple outstanding dial requestsGarrett D'Amore2018-07-16
| | | | | | | | | | | | | | | | | | | | | | | | fixes #179 DNS resolution should be done at connect time fixes #586 Windows IO completion port work could be better fixes #339 Windows iocp could use synchronous completions fixes #280 TCP abstraction improvements This is a rather monstrous set of changes, which refactors TCP, and the underlying Windows I/O completion path logic, in order to obtain a cleaner, simpler API, with support for asynchronous DNS lookups performed on connect rather than initialization time, the ability to have multiple connects or accepts pending, as well as fewer extraneous function calls. The Windows code also benefits from greatly reduced context switching, fewer lock operations performed, and a reduced number of system calls on the hot code path. (We use automatic event resetting instead of manual.) Some dead code was removed as well, and a few potential edge case leaks on failure paths (in the websocket code) were plugged. Note that all TCP based transports benefit from this work. The IPC code on Windows still uses the legacy IOCP for now, as does the UDP code (used for ZeroTier.) We will be converting those soon too.
* fixes #583 stress tests can starve completionGarrett D'Amore2018-07-06
|
* fixes #584 Use after-free in websocketGarrett D'Amore2018-07-06
|
* fixes #568 Want a single reader/write lock on socket child objectsGarrett D'Amore2018-07-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | fixes #170 Make more use of reaper This is a complete restructure/rethink of how child objects interact with the socket. (This also backs out #576 as it turns out not to be needed.) While 568 says reader/writer lock, for now we have settled for a single writer lock. Its likely that this is sufficient. Essentially we use the single socket lock to guard lists of the socket children. We also use deferred deletion in the idhash to facilitate teardown, which means endpoint closes are no longer synchronous. We use the reaper to clean up objects when the reference count drops to zero. We make a special exception for pipes, since they really are not reference counted by their parents, and they are leaf objects anyway. We believe this addresses the main outstanding race conditions in a much more correct and holistic way. Note that endpoint shutdown is a little tricky, as it makes use of atomic flags to guard against double entry, and against recursive lock entry. This is something that would be nice to make a bit more obvious, but what we have is safe, and the complexity is at least confined to one place.
* fixes #581 nni_idhash could use 32-bit variantGarrett D'Amore2018-07-06
|
* fixes #582 transport tests should run even with dynamic linkingGarrett D'Amore2018-07-06
|
* fixes #566 Windows iov resubmit routine is not used.Garrett D'Amore2018-07-06
|
* fixes #579 Use ids for pipe listener and dialerGarrett D'Amore2018-07-06
| | | | | | This uses id lookups for pipe listener and dialer during pipe getopt, while still retaining the pointer fields for use during tear down. More changes coming.
* Releasing version 1.0.1.v1.0.1Garrett D'Amore2018-07-05
|
* fixes #576 IPC listen unlinks UNIX socket on failureGarrett D'Amore2018-07-05
|
* fixes #574 nng_close should indicate warning against transmit truncationGarrett D'Amore2018-07-04
|
* fixes #575 kqueue spins hardGarrett D'Amore2018-07-04
| | | | | This sets the kqueue events to autoclear, reducing CPU usage to normal sane levels, and eliminating the hard spin.
* fixes #572 Several locking errors foundGarrett D'Amore2018-07-03
| | | | | | | | | | fixes #573 atomic flags could help This introduces a new atomic flag, and reduces some of the global locking. The lock refactoring work is not yet complete, but this is a positive step forward, and should help with certain things. While here we also fixed a compile warning due to incorrect types.
* fixes #564 Race regression caused by#522Garrett D'Amore2018-07-02
| | | | | | fixes #565 Option getting should validate sizes more aggressively fixes #563 Reconnect timeouts should be settable on dialers fixes #562 pipe test is fragile
* nni_url_parse does not handle ipc and inproc David Horsley2018-06-28
| | | a missing return causes ipc and inproc URLs to be parsed as usual. Results in a memory leak.
* fixes #522 Separate out the endpoint plumbingGarrett D'Amore2018-06-27
| | | | | | | | | | This separates the plumbing for endpoints into distinct dialer and listeners. Some of the transports could benefit from further separation, but we've done some rather larger separation e.g. for the websocket transport. IPC would be a good one to update later, when we start looking at exposing a more natural underlying API.
* fixes #552 man pages do not document NNG_ETIMEDOUTGarrett D'Amore2018-06-25
|
* fixes #539 Feature request: customizable http error pageGarrett D'Amore2018-06-15
|
* fixes #545 uaio assertion error in wsGarrett D'Amore2018-06-14
|
* fixes #518 Panic in compat_ws -- use after free?Garrett D'Amore2018-06-14
|
* fixes #540 nni_ep_opttype serves no purposeGarrett D'Amore2018-06-13
| | | | | | | | | | | | fixes #538 setopt should have an explicit chkopt routine fixes #537 Internal TCP API needs better name separation fixes #524 Option types should be "typed" This is a rework of the option management code, to make it both clearer and to prepare for further work to break up endpoints. This reduces a certain amount of dead or redundant code, and actually saves cycles when setting options, as some loops were not terminated that should have been.
* fixes #535 aio->a_closed and aio->a_stop could be consolidatedGarrett D'Amore2018-06-12
|
* fixes #533 nni_aio_begin should not dispatch task on NNG_ECLOSED.Garrett D'Amore2018-06-12
| | | | | | | | | | This changes nni_aio_begin so that it immediately terminates when it encounters aio->a_closed, much like it does for aio->a_stop. The semantic for nni_aio_close() is supposed to be like nni_aio_stop(), but without blocking. I suspect that this might be responsible for use-after-free bugs that seem to have been rearing their head lately.
* fixes #527 http_res_set_reason crash in exampleGarrett D'Amore2018-06-12
|
* fixes #32 autoscale based on CPUs availableGarrett D'Amore2018-06-12
| | | | | | This should work on both Windows and the most common POSIX variants. We will create at least two threads for running completions, but there are numerous other threads in the code.
* fixes #525 posix nni_plat_tcp_ep_init should not mark mode unusedGarrett D'Amore2018-06-11
|
* fixes #521 ep_stop is not actually usedGarrett D'Amore2018-06-11
|
* fixes #511 Want to be able to have deferred destroy of tasks and aiosGarrett D'Amore2018-06-09
| | | | | | | | | | Essentially, if we're destroying an aio, and we are doing so from the thread that is running the callback, then we should defer the destruction of the task until it returns. Note that calling nni_aio_wait() or anything else that calls it from the callback is still verboten and will result in a single party deadlock.
* Remove tag - version 1.0.0 fcs now.v1.0.0Garrett D'Amore2018-06-08
|
* fixes #517 nng_recv needs to document NNG_FLAG_NONBLOCKGarrett D'Amore2018-06-08
|
* fixes #509 We need "relative" IPC URLsGarrett D'Amore2018-06-08
| | | | | | This special cases the URL parser for inproc and IPC urls, changing so that they no longer parse the thing after the :// as anything special. This allows IPC URLs to be relative.
* Fix spelling errors in README.Garrett D'Amore2018-06-08
|
* fixes #510 HTTP and TLS man pages refer to private symbolsGarrett D'Amore2018-06-08
|
* fixes #514 Need documentation updates for 1.0Garrett D'Amore2018-06-08
|
* fixes #512 ZeroTier can use master branch of ZeroTierOne nowGarrett D'Amore2018-06-08
|
* fixes #508 nng_aio_free blocks during callbackGarrett D'Amore2018-06-07
| | | | | | | | | | | | | | | | This recycles the job structures, and so the demo seems to work. If you have sufficient concurrency, these aio structures will ultimately leak (with the level of concurrency), but for this demo that's fine. (To keep them from leaking, you'd walk the freelist and discard them just before exiting. The actual growth of the list should be quite small.) There are other strategies that could be used to avoid uncontrolled growth, but they aren't useful for our demo purposes. Also, when we have a fix for 511, we can go ahead and just do a deferred discard. As aios are used *heavily* in the code, the strategy of a deferred cache may help reduce presssure on the heap, andd might be something we want to explore for the core.
* Adding sys/stat.h to src/platform/posix/posix_aio.h for building with muslMark Stevens2018-06-04
|
* 1.0.0 rc.1v1.0.0-rc.1Garrett D'Amore2018-06-01
|
* fixes #496 nngcat tests fail in Xcode buildGarrett D'Amore2018-06-01
| | | | | | | | | | | | This avoids copying the tests, but runs them with bash from the source directory, and passes the path to the built nngcat binary to the script. It also permits these to run if we find bash, so that systems without bash won't run it and fail. We still only do this on POSIX though, because Windows bash is too broken to use for some of the tests.
* Use IMPORTANT instead of WARNING for consistent icons and messaging.Garrett D'Amore2018-05-30
|
* Fix numerous spelling errrors.Garrett D'Amore2018-05-30
| | | | | | | These were found with the help of "aspell". Additionally, while reviewing the output from the spell checker, several content errors were noticed and fixed.