You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I don't like the current behaviour of Python on closed socket:
>>> import socket
>>> s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> s.close()
>>> s.fileno()
-1
>>> s.getsockname()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
socket.error: [Errno 9] Bad file descriptor
Some operations are still allowed whereas the other raise an ugly
error message. Most (or all) operation on a closed socket should be
blocked by a socket.error.
My patch raises a socket.error("I/O operation on closed socket") for
most operations except:
close(): it call be called twice (or more) (keep current behaviour)
gettimeout(): should we raise an error?
setblocking(), settimeout(): should we raise an error? Maybe yes
for setter but no for getter which would be inconsistent with
getpeername()...
The io library already has this behaviour: read(), write(), flush(),
etc. are blocked by a ValueError("I/O operation on closed file") (see
IOBase._check_closed in the io library).
Issue bpo-4791 changes the behaviour of closed SocketIO object: fileno()
method raise a socket.error if it's closed even if the socket is still
open.
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: