| Commit message (Collapse) | Author | Age | ||
|---|---|---|---|---|
| ... | ||||
| * | Fix lost event during poll. | Garrett D'Amore | 2017-07-06 | |
| | | ||||
| * | Fixes for async resolver, plus a test suite for it. | Garrett D'Amore | 2017-07-06 | |
| | | ||||
| * | Initial swag at asynchronous name resolution. | Garrett D'Amore | 2017-07-06 | |
| | | ||||
| * | Make ipc work 100% async. | Garrett D'Amore | 2017-07-05 | |
| | | | | | | | | | | | | | | | | | | | The connect & accept logic for IPC is now fully asynchronous. This will serve as a straight-forward template for TCP. Note that the upper logic still uses a thread to run this "synchronously", but that will be able to be removed once the last transport (TCP) is made fully async. The unified ipcsock is also now separated, and we anticipate being able to remove the posix_sock.c logic shortly. Separating out the endpoint logic from the pipe logic helps makes things clearer, and may faciliate a day where endpoints have multiple addresses (for example with a connect() endpoint that uses a round-robin DNS list and tries to run the entire list in parallel, stopping with the first connection made.) The platform header got a little cleanup while we were here. | |||
| * | Cleanup some unused things. | Garrett D'Amore | 2017-07-05 | |
| | | ||||
| * | Remove obsolete poll.c. | Garrett D'Amore | 2017-07-05 | |
| | | ||||
| * | epdesc functionality. | Garrett D'Amore | 2017-07-05 | |
| | | ||||
| * | Separate out poller/pollq from basic socket operations. | Garrett D'Amore | 2017-07-04 | |
| | | ||||
| * | Improved routines for list management. | Garrett D'Amore | 2017-07-04 | |
| | | ||||
| * | All pipes are nonblocking. | Garrett D'Amore | 2017-07-04 | |
| | | ||||
| * | Rename aio functions. Enhanced epdesc_finish. | Garrett D'Amore | 2017-07-04 | |
| | | ||||
| * | IPC & TCP negotiation done using aio. Remove old sync send/recv. | Garrett D'Amore | 2017-07-03 | |
| | | ||||
| * | Properly initialize eps during listen. | Garrett D'Amore | 2017-06-30 | |
| | | ||||
| * | pipedesc_read/write -> pipedesc_send/recv. | Garrett D'Amore | 2017-06-30 | |
| | | ||||
| * | More progress on POSIX async connect stuff. | Garrett D'Amore | 2017-06-30 | |
| | | | | | | | | | | Note that we're going to refactor this again, for both TCP and IPC, to actually push the endpoint abstraction further down instead of using a combined "socket" abstraction. This may help solve other problems, such as parallel outgoing connections. Nonetheless, most of the work to make POSIX sockets fully async is now done. | |||
| * | IPC fixes: correct handling of path removal, and path absence. | Garrett D'Amore | 2017-06-30 | |
| | | ||||
| * | Fixes for IPC: don't try to disable Nagle, and use SUN_LEN properly. | Garrett D'Amore | 2017-06-29 | |
| | | ||||
| * | More plumbing for async connections. | Garrett D'Amore | 2017-06-29 | |
| | | ||||
| * | Begin work on async connect/accept for POSIX. Not referenced yet. | Garrett D'Amore | 2017-06-29 | |
| | | ||||
| * | Use common POSIX socket handling for IPC. | Garrett D'Amore | 2017-06-29 | |
| | | ||||
| * | Avoid Solaris / illumos namespace collision. | Garrett D'Amore | 2017-06-29 | |
| | | ||||
| * | Use common socket handling on POSIX (tcp done, ipc pending.) | Garrett D'Amore | 2017-06-29 | |
| | | ||||
| * | Adjust npds count properly. | Garrett D'Amore | 2017-06-29 | |
| | | ||||
| * | Pass cancel of IPC and TCP all the way down to POSIX pipedescs. | Garrett D'Amore | 2017-06-29 | |
| | | ||||
| * | Refactor stop again, closing numerous races (thanks valgrind!) | Garrett D'Amore | 2017-06-28 | |
| | | ||||
| * | Convert to POSIX polled I/O for async; start of cancelable aio. | Garrett D'Amore | 2017-06-27 | |
| | | | | | | | | | | | | | | | | | | | This eliminates the two threads per pipe that were being used to provide basic I/O handling, replacing them with a single global thread for now, that uses poll and nonblocking I/O. This should lead to great scalability. The infrastructure is in place to easily expand to multiple polling worker threads. Some thought needs to be given about how to scale this to engage multiple CPUs. Horizontal scaling may also shorten the poll() lists easing C10K problem. We should look into better solutions than poll() for platforms that have them (epoll on Linux, kqueue on BSD, and event ports on illumos). Note that the file descriptors start out in blocking mode for now, but then are placed into non-blocking mode. This is because the negotiation phase is not yet callback driven, and so needs to be synchronous. | |||
| * | More race condition fixes. | Garrett D'Amore | 2017-06-26 | |
| | | ||||
| * | Adding mutex lock during fini to prevent false positive data race. | Garrett D'Amore | 2017-06-25 | |
| | | ||||
| * | Clear the owner while *still* holding the lock. | Garrett D'Amore | 2017-06-25 | |
| | | ||||
| * | Additional mutex debugging support. | Garrett D'Amore | 2017-06-22 | |
| | | ||||
| * | Expose a library finalizer suitable for atexit(). | Garrett D'Amore | 2017-06-21 | |
| | | ||||
| * | ETIME may not be defined on various platforms (STREAMs specific). | Garrett D'Amore | 2017-04-12 | |
| | | ||||
| * | IPC send/recv works asynchronously for POSIX. | Garrett D'Amore | 2017-03-29 | |
| | | | | | | | | | | | As with TCP, we're still using threads under the hood. But this completes the send/recv logic conversion for POSIX to our AIO framework, and hence represents a substantial milestone towards full asyncronous operation. We still need to do accept/connect operations asynchronously, then making. Windows overlapped IO work properly. After that, poll/epoll/kqueue, etc. | |||
| * | Clean up some dead code. | Garrett D'Amore | 2017-03-29 | |
| | | ||||
| * | TCP (POSIX) async send/recv working. Other changes. | Garrett D'Amore | 2017-03-29 | |
| | | | | | | | | Transport-level pipe initialization is now sepearate and explicit. The POSIX send/recv logic still uses threads under the hood, but makes use of the AIO framework for send/recv. This is a key stepping stone towards enabling poll() or similar async I/O approaches. | |||
| * | Start of msgq aio. | Garrett D'Amore | 2017-03-01 | |
| | | ||||
| * | Async I/O for POSIX implemented using threads (untested.) | Garrett D'Amore | 2017-02-24 | |
| | | ||||
| * | Fix for SunOS/illumos. | Garrett D'Amore | 2017-01-25 | |
| | | ||||
| * | Add nn_sendmsg (with NN_MSG support). | Garrett D'Amore | 2017-01-23 | |
| | | ||||
| * | Initial start of compat layer with bind, connect, etc. Untested. | Garrett D'Amore | 2017-01-22 | |
| | | ||||
| * | Event notification via pollable FDs verified working. | Garrett D'Amore | 2017-01-22 | |
| | | ||||
| * | Whoops, forgot to add the pipe implementations to git!! | Garrett D'Amore | 2017-01-21 | |
| | | ||||
| * | Initial swag at notification pipes (not used yet). | Garrett D'Amore | 2017-01-21 | |
| | | ||||
| * | Add more platforms (the *BSDs, SunOS/illumos) and update docs slightly. | Garrett D'Amore | 2017-01-21 | |
| | | ||||
| * | Fix synchronization problem in msgqueue with multiple consumers. | Garrett D'Amore | 2017-01-19 | |
| | | ||||
| * | Fix TCP hostname wildcards on Windows. Sort of. | Garrett D'Amore | 2017-01-18 | |
| | | | | | | | | | | I seem to be having a very difficult time getting dual-stack sockets to function properly on Windows. I've sort of abandoned it for now. I need to think about how to solve this -- it's not clear to me right now whether dual stack sockets are the right answer or not. People do expect these to work, but a tcp6:// url might be more elegant. | |||
| * | Address segfault in TCP, and fix wild card handling. | Garrett D'Amore | 2017-01-18 | |
| | | ||||
| * | Reaper exits too soon, leaking bits. | Garrett D'Amore | 2017-01-18 | |
| | | ||||
| * | Fixes for valgrind issues. | Garrett D'Amore | 2017-01-18 | |
| | | ||||
| * | Windows clock fixes. | Garrett D'Amore | 2017-01-16 | |
| | | | | | | | | | | | | | Sleep() on Win32 rounds *down*, leading to truncated timeouts. What we do is change our sleep routing to start incrementally sleeping by 1ms until the tick count is reached. This ensures we don't wake early. This problem affects condition variables too, which means that some timeouts may occur up to one clock tick early (15ish ms). This should not be a problem for most users, who should really only be setting timeouts in quantities of a second or greater. | |||
