aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* pipes: fix crash caused by use after free race in rejectiontcp-dialer-local-testGarrett D'Amore2024-12-30
|
* sockaddr: ingore the sin6_len fieldGarrett D'Amore2024-12-30
|
* Use AF instead of PF for socket address familiesGarrett D'Amore2024-12-30
|
* tcp dialer tests: add local address testsGarrett D'Amore2024-12-30
|
* poll poller: support concurrency for pollers using poll()Garrett D'Amore2024-12-30
|
* poller: port events scalability (illumos/Solaris)Garrett D'Amore2024-12-30
|
* fixes #530 POSIX pollqs should scale horizontally (epoll)Garrett D'Amore2024-12-30
| | | | | | | | This should help Linux platforms scale even further with NNG. Port events and *maybe* poll are the last to do. Probably select will remain left in the cold, because honestly select based systems are already performance constrained.
* kqueue: support concurrent pollersGarrett D'Amore2024-12-30
| | | | | | | | | | | | | This allows greatly increased scalability for kqueue based systems with lots of cores (more likely FreeBSD than Darwin, as most macs only have a smattering of cores), but even for macs we can engage a few cores for system calls giving improvements. The implementation here is pretty simple -- each file descriptor gets assigned to its own kqueue by taking the numeric value of the file descriptor modulo the number of kqueues we have opened. The same approach will be adopted for epoll and Solaris/illumos port events.
* ipc test: add a case for IPC that never connectsGarrett D'Amore2024-12-30
| | | | | | | This involved test-specific hacks, since connect() for UNIX domain sockets always completes synchronously one way or the other, even though it is documented that it might not. This found a bug, with an uninitialized poll FD as well!
* ipc/tcp stream tests: use dup() to avoid confusion and hang in teardownGarrett D'Amore2024-12-30
| | | | | This was observed only in the select poller, but the behavior of having the same file descriptor registered in the poller more than once is undefined.
* bump test timeouts for CI/CDGarrett D'Amore2024-12-30
|
* fixup! fixes #863 socket activation: for TCP and IPC (POSIX only)Garrett D'Amore2024-12-30
|
* socket activation: test fixes (improve coverage, etc.)Garrett D'Amore2024-12-30
|
* fixes #863 socket activation: for TCP and IPC (POSIX only)Garrett D'Amore2024-12-30
| | | | | | | | | This introduces a new option "NNG_OPT_LISTEN_FD", understood by TCP, TLS, and (on POSIX systems) IPC. This option is used to pass a file descriptor or handle (Windows) that is already listening (ready for ACCEPT to be called). For TCP and TLS, the socket must be of type AF_INET or AF_INET6, and for IPC it must be of type AF_UNIX.
* posix: fall back to send if sendmsg is unavailable for ipc and tcpGarrett D'Amore2024-12-29
| | | | | This will be slower, as each vector element has to be sent in a single system call, but for platforms that lack sendmsg it will at least work.
* aio: clear vector on advance (debugging aid)Garrett D'Amore2024-12-29
|
* aio test: add a test for IOV overrunGarrett D'Amore2024-12-29
|
* udp: use a bounce buffer if we lack sendmsg or recvmsgGarrett D'Amore2024-12-29
| | | | | This includes checks to determine if those functions are present, and a test case to verify that scatter gather with UDP works.
* resolver: add some additional test coverageGarrett D'Amore2024-12-29
| | | | | | While here, remove some code paths that do not occur by definition. (For example, if the resolver succeeds, we will definitely have a valid set of addresses, but if it fails, we will definitely not.)
* tcp listener: remove obsolete function prototypesGarrett D'Amore2024-12-28
|
* fixup! resolver: use explicit resolver item provided by callerGarrett D'Amore2024-12-28
|
* resolver: default to just a single resolver threadGarrett D'Amore2024-12-28
| | | | | | | Nearly all applications are either purely server based (needing no resolvers really), or dialers only dialing a single destination. These do not need multiple dialers, and threads are expensive on some platforms (and they are more trouble during debugging.)
* resolver: use explicit resolver item provided by callerGarrett D'Amore2024-12-28
| | | | | | This avoids the need to perform multiple allocations for dialing, eliminating additional potential failures. Cancellation is also made simpler and more perfectly robust.
* windows tcp: fix compilation warningGarrett D'Amore2024-12-28
|
* windows tests: some tests of performance tools fail lately in CI/CD on WindowsGarrett D'Amore2024-12-28
|
* fixes #961 surprising pipe event orderGarrett D'Amore2024-12-28
|
* tcp stream: add test for ESTATE getting port on unbound listenerGarrett D'Amore2024-12-28
|
* windows tcp: Lookup extended TCP function pointers at startupGarrett D'Amore2024-12-28
| | | | | | This avoids the need for a lock during listener or dialer initialization, and it avoids the need to carry these pointers on those objects. It also eliminates a potential failure case "post startup".
* tcp: flatten the listener implementationGarrett D'Amore2024-12-28
| | | | | | | | | | The endpoints both use a nesting level for some common code and some platform dependent code. But the common code isn't that much and we have similar patterns for e.g. IPC. This avoids a layer of indirection in the structs, and extra allocations. The payoff will be even larger for the dialers, but that is next. (Dialers are more complicated because of DNS.)
* zerotier: removedGarrett D'Amore2024-12-26
| | | | | | | | | | All vestiges of ZeroTier have been removed. Also, as consequence, some binary values have changed (specifically the number of the address family used for NNG_AF_ABSTRACT.) We may create a new ZeroTier transport that makes use of lwIP to provide for ZeroTier and native host network coexistence, without requiring ZeroTier to participate in the native networking stack.
* http: inline aiosGarrett D'Amore2024-12-26
|
* tcp dialer: inline aio objectsGarrett D'Amore2024-12-26
|
* dialer: use inline aioGarrett D'Amore2024-12-26
|
* fix for potential leaking connectionsGarrett D'Amore2024-12-26
|
* aio: remove nni_aio_begin and nni_aio_scheduleGarrett D'Amore2024-12-26
| | | | | The nni_aio_start function replaces these two functions with a simple, single call, reducing pressure on common locks.
* pipeline: use nni_aio_startGarrett D'Amore2024-12-26
|
* sub: remove some calls to nni_aio_beginGarrett D'Amore2024-12-26
|
* pair0: use nni_aio_startGarrett D'Amore2024-12-26
|
* pair1: use nni_aio_startGarrett D'Amore2024-12-26
|
* pub sub: use nni_aio_startGarrett D'Amore2024-12-26
|
* bus: use nni_aio_startGarrett D'Amore2024-12-26
| | | | | | The test needed a change to ensure that we do not trigger a debugging check (you cannot submit another job on an aio that you've been notified is stopped via NNG_ESTOPPED.)
* req rep: use nni_aio_startGarrett D'Amore2024-12-26
|
* survey protocol conversion to nni_aio_startGarrett D'Amore2024-12-26
|
* udp: more nni_aio_startGarrett D'Amore2024-12-26
|
* http: more nni_aio_start changesGarrett D'Amore2024-12-26
|
* tls: use nni_aio_beginGarrett D'Amore2024-12-26
|
* http: No need to do nni_aio_begin for callbacksGarrett D'Amore2024-12-26
|
* udp: use nni_aio_startGarrett D'Amore2024-12-26
| | | | | | This also moves the close of the UDP socket later, to avoid a potential use after free while the aio's are still in-flight. Unfortunately we cannot unbind cleanly without a hard close.
* aio: nng_aio_defer replaced by nng_aio_startGarrett D'Amore2024-12-26
| | | | | This represents an API change, and we remove the nng_aio_begin function as well, introducing the lightweight nng_aio_reset instead.
* dialer: use nni_aio_startGarrett D'Amore2024-12-26
|