aboutsummaryrefslogtreecommitdiff
path: root/src/core/socket.c
Commit message (Collapse)AuthorAge
* Some initial progress on *connect* async.Garrett D'Amore2017-07-15
| | | | | | This actually is breaking at the moment, because we don't have good integration with timeouts, and there are some frustrating races with timeouts at points that can cause apparent hangs.
* Implemented asynchronous (fully) accept.Garrett D'Amore2017-07-14
| | | | | | This logic leaves a race condition in the dial side, which will be fixed with a subsequent change to convert that to fully asynchronous as well.
* Attempts to minimize races, remove unused nni_sock_mtx function.Garrett D'Amore2017-07-12
| | | | | | We still have endpoint related races apparently; we need to examine the possibility of handling endpoints much like we do pipes, which seem to be race free.
* Give up on uncrustify; switch to clang-format.Garrett D'Amore2017-07-10
|
* SRWLocks FTW!Garrett D'Amore2017-07-07
| | | | | | | | | Modern Windows (Vista and later) have light weight Slim Read/Write locks which only occupy 64 bits, and don't require any memory allocation to create. While here clean up a few more unreferenced variables found with the Microsoft compilers.
* TCP asynchronous working now.Garrett D'Amore2017-07-07
| | | | | | | | | | | | | | | | It turns out that I had to fix a number of subtle asynchronous handling bugs, but now TCP is fully asynchronous. We need to change the high-level dial and listen interfaces to be async as well. Some of the transport APIs have changed here, and I've elected to change what we expose to consumers as endpoints into seperate dialers and listeners. Under the hood they are the same, but it turns out that its helpful to know the intended use of the endpoint at initialization time. Scalability still occasionally hangs on Linux. Investigation pending.
* Use common aio cancellation.Garrett D'Amore2017-07-02
|
* Refactor stop again, closing numerous races (thanks valgrind!)Garrett D'Amore2017-06-28
|
* Fix a few race condition panics.Garrett D'Amore2017-06-25
|
* Protocols keep their own reference counts.Garrett D'Amore2017-06-24
|
* Start undoing the recursive references -- KISS.Garrett D'Amore2017-06-22
|
* Don't acquire the lock if the endpoint isn't on a list.Garrett D'Amore2017-06-22
|
* Make APIs for holding references more consistent.Garrett D'Amore2017-06-21
|
* Endpoint close can be moved later; add check for closed in pipe_add.Garrett D'Amore2017-06-09
|
* Eliminate idle pipe list (unused).Garrett D'Amore2017-06-09
|
* Pipes are now mostly using object hash -- taskq_cancel race TBD.Garrett D'Amore2017-06-08
|
* Reconn times acquired atomically by socket under lock.Garrett D'Amore2017-06-06
|
* Endpoint now holds a reference on the socket.Garrett D'Amore2017-06-06
|
* Make objhash fini calls idempotent.Garrett D'Amore2017-06-06
|
* New object hash implementation, used by socket (to start).Garrett D'Amore2017-06-05
|
* More cleanups. Delete unused call, isolate ep list creation.Garrett D'Amore2017-03-19
|
* Eliminate p_active, better names for pipe start and stop.Garrett D'Amore2017-03-19
|
* Reduce socket/pipe private data coupling.Garrett D'Amore2017-03-19
|
* Notification working - separate thread now.Garrett D'Amore2017-03-11
|
* Eliminate per-socket workers.Garrett D'Amore2017-03-10
|
* Good-bye reaper thread.Garrett D'Amore2017-03-10
|
* Start of close related race fixes. Scalability test.Garrett D'Amore2017-03-10
|
* Pipeline protocol now entirely callback driven.Garrett D'Amore2017-03-04
|
* Add device support & testing. Bus semantic fix.Garrett D'Amore2017-01-27
| | | | | | | | | | | This adds nn_device and nng_device. There were some internal changes required to fix shutdown / close issues. Note that we shut down the sockets when exiting from device -- this is required to make both threads see the failure and bail, since we are not using a single event loop. I also noticed that the bus protocol had a bug where it would send messages back to the originator. This was specifically tested for in the compat_device test, and we have fixed it.
* Add endpoint tuning of maxrcv size. Fix cmsg API.Garrett D'Amore2017-01-24
| | | | | | | | | | | | | | The CMSG handling was completely borked. This is fixed now, and we stash the SP header size (ugh) in the CMSG contents to match what nanomsg does. We now pass the cmsg validation test. We also fixed handling of certain endpoint-related options, so that endpoints can get options from the socket at initialization time. This required a minor change to the transport API for endpoints. Finally, we fixed a critical fault in the REP handling of RAW sockets, which caused them to always return NNG_ESTATE in all cases. It should now honor the actual socket option.
* Implement reconnect timer including backoff.Garrett D'Amore2017-01-24
| | | | This allows us to enable the last test case for compat_reqrep.
* Initial start of compat layer with bind, connect, etc. Untested.Garrett D'Amore2017-01-22
|
* Event notification via pollable FDs verified working.Garrett D'Amore2017-01-22
|
* Adds NNG_OPT_SENDFD and NNG_OPT_RECVFD socket options (untested).Garrett D'Amore2017-01-21
|
* Fix leaks in bus, socket leaks, tighten up close-side refcnting.Garrett D'Amore2017-01-21
| | | | | | | | | | | | | | This does a few things. First it closes some preexisting leaks. Second it tightens the overall close logic so that we automatically discard idhash resources (while keeping numeric values for next id etc. around) when the last socket is closed. This then eliminates the need for applications to ever explicitly terminate resources. It turns out platform-specific resources established at nni_init() time might still be leaked, but it's also the case that we now no longer dynamically allocate anything at platform initialization time. (This presumes that the platform doesn't do so under the hood when creating critical sections or mutexes for example.)
* Resolve deadlock during close.Garrett D'Amore2017-01-21
|
* fixes #18 Sockets should be uint32_t's (handles) not pointers.Garrett D'Amore2017-01-20
|
* Reduce lock contention and simplify logic for endpoint creation.Garrett D'Amore2017-01-18
|
* Reaper exits too soon, leaking bits.Garrett D'Amore2017-01-18
|
* Fix leaking notify structs.Garrett D'Amore2017-01-18
|
* Pipe IDs are now tracked on global ID hashes.Garrett D'Amore2017-01-17
|
* Pipe IDs are now tracked by hash table for performance.Garrett D'Amore2017-01-17
| | | | | This gives a better idea of pipe ID uniqueness, and is a step towards conversion of the API to use IDs instead of pointers.
* External event API for send/recv implemented.Garrett D'Amore2017-01-16
| | | | | | This was the main blocker, I think, for the nanomsg legacy compat shim. Now that we have this, it should be relatively straight-forward to implement the legacy nanomsg API, including the SENDFD, RECVFD thing.
* Recv/Send event plumbing implemented (msgqueue and up).Garrett D'Amore2017-01-16
| | | | | | | | This change provides for a private callback in the message queues, which can be used to notify the socket, and which than arranges for the appropriate event thread to run. Upper layer hooks to access this still need to be written.
* Start of event framework.Garrett D'Amore2017-01-16
| | | | | | | | | | This compiles correctly, but doesn't actually deliver events yet. As part of this, I've made most of the initializables in nng safe to tear-down if uninitialized (or set to zero e.g. via calloc). This makes it loads easier to write the teardown on error code, since I can deinit everything, without worrying about which things have been initialized and which have not.
* Various complaints found in AppVeyor build.Garrett D'Amore2017-01-16
|
* Move to generic socket & pipe workers, and up to 4 each.Garrett D'Amore2017-01-08
| | | | | This should eliminate all need for protocols to do their own thread management tasks.
* More close race fixing.Garrett D'Amore2017-01-07
| | | | | Don't drop the lock in sock_close while holding the pipe reference. I'm pretty sure this is responsible for the use-after-free race.
* Clean up sender/recver threads.Garrett D'Amore2017-01-07
|
* Uncrustify fix for last.Garrett D'Amore2017-01-07
|