[issue9177] ssl.read/write on closed socket raises AttributeError
Roundup Robot added the comment: New changeset eda7e86bf03c by Antoine Pitrou in branch 'default': Issue #9177: Calling read() or write() now raises ValueError, not AttributeError, on a closed SSL socket. http://hg.python.org/cpython/rev/eda7e86bf03c -- nosy: +python-dev ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9177 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9177] ssl.read/write on closed socket raises AttributeError
Antoine Pitrou added the comment: Ok, I tweaked the error message a bit: _sslobj can also be None when unwrap() has been called on the socket. Thank you for contribution! -- resolution: - fixed stage: patch review - committed/rejected status: open - closed ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9177 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9177] ssl.read/write on closed socket raises AttributeError
Antoine Pitrou added the comment: Thanks for the patch, I will take a look. -- stage: needs patch - patch review versions: +Python 3.4 -Python 3.3 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9177 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9177] ssl.read/write on closed socket raises AttributeError
STINNER Victor added the comment: ssl-socket-readwrite-after-close.diff: instead of testing not self._sslobj, I would prefer an explicit self._sslobj is None. -- nosy: +haypo ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9177 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9177] ssl.read/write on closed socket raises AttributeError
STINNER Victor added the comment: The check should be moved into the _checkClosed() method. Example: def _checkClosed(self): io.RawIOBase._checkClosed(self) if self._sslobj is None: raise ValueError(I/O operation on closed SSL socket) -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9177 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9177] ssl.read/write on closed socket raises AttributeError
STINNER Victor added the comment: Oops, remove io.RawIOBase._checkClosed(self) from my example (I read socket.py at the same time, SSLSocket inherits from socket, not from RawIOBase). -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9177 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9177] ssl.read/write on closed socket raises AttributeError
Senko Rasic added the comment: Here's a patch that adds checks and ValueError raises to SSLSocket.read and SSLSocket.write. My first attempt was to add the check to _checkClosed to mirror the IOBase._checkClosed, but in SSLSocket its semantics are different (the idea is for the subclass to add custom checks if needed), and it's called from a lot of places that do gracefully handle closed sockets. So I opted to add it manually to only the read and write methods (which allowed for more specific error messages). -- keywords: +patch nosy: +senko Added file: http://bugs.python.org/file30844/ssl-socket-readwrite-after-close.diff ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9177 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9177] ssl.read/write on closed socket raises AttributeError
Changes by Ezio Melotti ezio.melo...@gmail.com: -- nosy: +ezio.melotti, pitrou stage: - needs patch versions: +Python 3.3 -Python 2.6, Python 3.1 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9177 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9177] ssl.read/write on closed socket raises AttributeError
Antoine Pitrou pit...@free.fr added the comment: I don't think mimicking EBADF is very useful. Reading from a closed socket is usually a programming error, so it's not the kind of error you'll want to catch at runtime. AttributeError may not be very pretty though, so perhaps a ValueError can be raised as with closed files: f = open(LICENSE) f.close() f.read() Traceback (most recent call last): File stdin, line 1, in module ValueError: I/O operation on closed file. -- type: behavior - enhancement versions: -Python 2.7, Python 3.2 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9177 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9177] ssl.read/write on closed socket raises AttributeError
New submission from Cyril c...@excellency.fr: This: import socket, ssl s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ssl_sock = ssl.wrap_socket(s) ssl_sock.connect(('www.verisign.com', 443)) ssl_sock.close() ssl_sock.read(1024) raises: Traceback (most recent call last): File /tmp/bug.py, line 10, in module ssl_sock.read(1024) File /path/to/lib/python2.7/ssl.py, line 138, in read return self._sslobj.read(len) AttributeError: 'NoneType' object has no attribute 'read' I would expect a socket.error instead, which mimics the way regular sockets behave. Indeed, this code: import socket, ssl s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('www.verisign.com', 80)) s.close() s.recv(1024) raises: Traceback (most recent call last): File /tmp/bug.py, line 6, in module s.recv(1024) File /path/to/lib/python2.7/socket.py, line 170, in _dummy raise error(EBADF, 'Bad file descriptor') socket.error: [Errno 9] Bad file descriptor I've tested on the latest trunks on both 2.7 and 3.2. I've also tested on 2.6 and 3.1. I can write a patch that fixes it if the bug is accepted. -- components: Library (Lib) messages: 109379 nosy: cbay priority: normal severity: normal status: open title: ssl.read/write on closed socket raises AttributeError type: behavior versions: Python 2.6, Python 2.7, Python 3.1, Python 3.2 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9177 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com