commit 1e2e6204eb8ba618e79c7bb1459e53e5154147fa Author: Damian Johnson atagar@torproject.org Date: Sun Jan 27 17:43:22 2013 -0800
Socket closures raise a ValueError in python 3
Evidently reading from a closed socket file raises a ValueError rather than socket.error in python 3...
Exception in thread Tor Listener: Traceback (most recent call last): File "/usr/lib/python3.2/threading.py", line 736, in _bootstrap_inner self.run() File "/usr/lib/python3.2/threading.py", line 689, in run self._target(*self._args, **self._kwargs) File "stem/control.py", line 573, in _reader_loop control_message = self._socket.recv() File "stem/socket.py", line 114, in recv return recv_message(socket_file) File "stem/socket.py", line 467, in recv_message line = control_file.readline() File "/usr/lib/python3.2/socket.py", line 269, in readinto self._checkClosed() ValueError: I/O operation on closed file. --- stem/socket.py | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/stem/socket.py b/stem/socket.py index bb7f0fe..9d48bd5 100644 --- a/stem/socket.py +++ b/stem/socket.py @@ -472,9 +472,14 @@ def recv_message(control_file): prefix = logging_prefix % "SocketClosed" log.info(prefix + "socket file has been closed") raise stem.SocketClosed("socket file has been closed") - except socket.error, exc: - # when disconnected we get... - # socket.error: [Errno 107] Transport endpoint is not connected + except (socket.error, ValueError), exc: + # When disconnected we get... + # + # Python 2: + # socket.error: [Errno 107] Transport endpoint is not connected + # + # Python 3: + # ValueError: I/O operation on closed file.
prefix = logging_prefix % "SocketClosed" log.info(prefix + "received exception "%s"" % exc)
tor-commits@lists.torproject.org