Tags: hhy5277/swift-nio
Tags
fix EventLoopFuture.and's serious threading issues (apple#176) Motivation: EventLoopFuture.and had serious threading issues if the EventLoops weren't the same. Modifications: Fixed the threading issues and tested them properly. Result: Hopefully `and` and `andAll` now don't crash if you use them across EventLoops.
fix closed accepting Channels in closed ServerSocketChannels (apple#170) Motivation: For servers NIO had a race where when you start tearing down the `ServerSocketChannel` and at roughly the same time a client connects, we would not fully bring that channel up, nor tear it down. That lead to open channels being deallocated which leads to a crash as that's an illegal state. Modifications: Made sure newly accepted channels get closed if the `ServerSocketChannel` is already clsing. Result: No crashes anymore when a client connects to a closing server.
Ensure channels don't get stuck completely unregistered. (apple#104) Motivation: It should be possible to have channels that are not registered for any form of I/O without them getting stuck in that model forever. Modifications: Remove the code that prevents channels registered for `.none` from registering for anything else. Result: Channels can actually be registered for nothing without becoming wedged open forever.