Previously accept() would copy the listener socket's cloexec and non-blocking flag. With that fixed however TCPServer and LocalServer now leak file descriptors into child processes and are blocking.