Issue 4853: I/O operation on closed socket: improve the error message (original) (raw)

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 "", line 1, in 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:

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 #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.