[issue7995] On Mac / BSD sockets returned by accept inherit the parent's FD flags
report at bugs.python.org
Sun Nov 21 21:26:56 CET 2010
Justin Cappos <justincappos at gmail.com> added the comment:
>> This implementation assumes that the OS sets any socket it receives
>> via accept to nonblocking. (this is a false assumption on BSD)
> Not true. It doesn't assume that (it doesn't assume the reverse,
The Python implementation sets timeout=None (which implies that the
underlying socket is blocking).
>> The end result is that the OS has a nonblocking socket and the Python
>> object thinks it is blocking. This is why the socket object in
>> Python has timeout=None yet calling fcntl shows the socket is
> That conclusion is flawed. Python has not associated a timeout with
> the socket. It makes no claims as to whether the socket is blocking
> or not. So you have created a non-blocking socket without timeout.
The problem is that it has. It has created a new Python socket
object with a specific value for timeout (None), but the underlying
socket is nonblocking.
The docs state that timeout = None makes the socket blocking.
Python tracker <report at bugs.python.org>
More information about the Python-bugs-list