aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* HTTP: intern the version and avoid allocationv2.0.0-alpha.1Garrett D'Amore2024-12-22
| | | | | | There are only a few possible reasonable values, and we can intern them to avoid any allocations for it. (We will probably do the same for the HTTP method shortly as well.)
* Use the Linux logo instead of UbuntuGarrett D'Amore2024-12-22
|
* OmniOS tests (this covers illumos and Solaris mostly, which uses the port ↵Garrett D'Amore2024-12-21
| | | | poller.)
* posix IPv6: BSD platforms us netinet6/in6.hGarrett D'Amore2024-12-21
|
* posix udp: AF_INET6 fixupGarrett D'Amore2024-12-21
|
* Add freebsd status to README.Garrett D'Amore2024-12-21
|
* posix udp: More explicit checks for bogus address familyGarrett D'Amore2024-12-21
| | | | | This triggered an error on FreeBSD because apparently FreeBSD will return a different value when seeing an AF_UNIX socket with UDP.
* files test: check to skip permissions before testingGarrett D'Amore2024-12-21
|
* freebsd workflowGarrett D'Amore2024-12-21
|
* workflows: only generate docs when appropriate, and don't do tests when only ↵Garrett D'Amore2024-12-21
| | | | docs change
* posix udp: stop the PFD explicitly before finalizingGarrett D'Amore2024-12-21
|
* nuts: add 20 millisecond delay before nng_finiGarrett D'Amore2024-12-21
| | | | | | This is to allow finalizers to run for the HTTP framework. This is a bug workaround for now, and should be fixed in the HTTP framework later by using reference counts correctly.
* poll: fix poll based pollerGarrett D'Amore2024-12-21
|
* workflows: add pollq and make build debug for backtracesGarrett D'Amore2024-12-21
|
* epoll: fixes for races and early wakeupsGarrett D'Amore2024-12-21
|
* posix: fix for IPC and TCP dialingGarrett D'Amore2024-12-21
| | | | | The dialer aio needs to be set before starting the dial operation, as the operation may complete right away.
* posix pollers: inline the pfd and make callbacks constantGarrett D'Amore2024-12-20
| | | | | | | This change moves the posix pollers to inline the PFD and makes the callbacks constant, so that we can dispense with tests, failures, and locks. It is anticipated that this will reduce lock based pressure on the bus and increase performance modestly.
* poll: performance improvements, simplificationsGarrett D'Amore2024-12-19
| | | | | | | | | | | We preallocate the arrays used for pollfds, based on what the system can tolerate (tunable with NNG_MAX_OPEN), and we change the code for inserting and removing pollfds from the list so that it can run without acquiring the locks during the main loop, only when adding or removing files. The poll() implementation is very nearly lock free in the hot code path, and soon will be.
* posix pollers: expose pfd structures (for sizes) and fix poller selectionGarrett D'Amore2024-12-19
| | | | | | | | | | | | | The poller selection in the previous poller changes for select were not quite functional. Also, while testing poll() based poller, there were problems where it simply did not work correctly, so this addresses those, and it seems to work now. The pfd structures are exposed as we intend to allow inlining them to eliminate the separate allocation and potential for failure during initialization. We also want to have plans afoot to eliminate a lot of the extra locking done done on each I/O iteration, and this is setting the foundation for that.
* http: don't assume 200 status unless we actually exchange dataGarrett D'Amore2024-12-19
| | | | This should simplify debugging in some circumstances.
* kqueue: eliminate extra locking on each I/OGarrett D'Amore2024-12-18
| | | | | This should reduce lock pressure during I/O for FreeBSD and macOS, and should provide a small performance benefit.
* POSIX poller: add support for select, and for choosing the pollerGarrett D'Amore2024-12-17
| | | | | Some platforms or configurations may not have more modern options like kqueue or epoll, or may be constrained by policy.
* syslog: test for existenceGarrett D'Amore2024-12-17
| | | | | | Some POSIX emulations may lack a reasonable syslog function (although syslog is required per the Open Group). For now we just check for it, and don't use it if it isn't present.
* websocket: stop trying to accept once we're closedGarrett D'Amore2024-12-16
|
* tls: fix deadlock in error pathGarrett D'Amore2024-12-16
|
* transports: all transports use the new inline approachGarrett D'Amore2024-12-15
| | | | | | We can retire the old approach that used separate allocations, and all of the supporting code. This also gives us a more natural signature for the end point initializations.
* websocket transport: use inline SP objectsGarrett D'Amore2024-12-15
| | | | | | | | | This also fixes a possible race in the listener that may cause connections to be dropped incorrectly, if the connection arrives before the common layer has posted an accept request. Instead we save the connection and potentially match later, like we do for the other protocols that need to negotiate.
* tls transport: use inline SP structuresGarrett D'Amore2024-12-15
|
* tls transport: inline aiosGarrett D'Amore2024-12-15
|
* inproc: use inline data structures for SP blocksGarrett D'Amore2024-12-15
| | | | | The pair is still a separate allocation, but this overall does reduce the number of allocations as well as a failure paths.
* inproc: use nni_refcntGarrett D'Amore2024-12-15
|
* remove panic - left over from debugGarrett D'Amore2024-12-15
|
* test: fix uninitialized complaint from tcp recv max testGarrett D'Amore2024-12-15
|
* ipc: remove unnecessary check for null msg in finiGarrett D'Amore2024-12-15
|
* tcp transport: use preallocated SP objectsGarrett D'Amore2024-12-15
| | | | This follows a pattern we started earlier with IPC.
* tcp transport: inline aios (eliminate failure paths)Garrett D'Amore2024-12-15
|
* http server: inline connection aio objectsGarrett D'Amore2024-12-15
| | | | Fewer failure paths, fewer allocations.
* http server: inline the accept aioGarrett D'Amore2024-12-15
| | | | Also properly stop it when doing http_server_stop.
* streams: add explicit stop functionsGarrett D'Amore2024-12-12
| | | | | | | | | | | | This allows us to explicitly stop streams, dialers, and listeners, before we start tearing down things. This hopefully will be useful in resolving use-after-free bugs in http, tls, and websockets. The new functions are not yet documented, but they are nng_stream_stop, nng_stream_dialer_stop, and nng_stream_listener_stop. They should be called after close, and before free. The close functions now close without blocking, but the stop function is allowed to block.
* docs: remove the pubrefman utilityGarrett D'Amore2024-12-12
| | | | | We're using mdbook for new docs now, and this has some security warnings that we'd rather not be bothered about.
* transports: all transports implement stop functionsGarrett D'Amore2024-12-11
| | | | | Add test cases ensuring that the transports implement all required functionality (entry points are not null).
* zerotier: implement ep stopGarrett D'Amore2024-12-11
|
* websocket: implement ep stop hereGarrett D'Amore2024-12-11
| | | | | While here renamed a couple of symbols to avoid conflation with the supplemental websocket functions of the same name.
* tls: implement ep stopGarrett D'Amore2024-12-11
|
* inproc: implement stub ep stopGarrett D'Amore2024-12-11
| | | | | | Inproc doesn't have any real need for action here, as it's simple, but the stub implementation will let us remove the check in the common code layer.
* tcp: implement ep stopGarrett D'Amore2024-12-11
|
* ipc transport: convert to using inline data structuresGarrett D'Amore2024-12-11
|
* udp: implement endpoint stop functionsGarrett D'Amore2024-12-11
|
* sockfd: implement endpoint stop functionsGarrett D'Amore2024-12-11
|
* endpoints: add transport ep stop functionsGarrett D'Amore2024-12-11
| | | | | | This should allow us to stop the endpoints early, without freeing them. This ensures that pipe creation has ended before we start tearing down pipes.