[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [flashproxy/master] Catch socket errors when receiving on a yet-unlinked socket.



commit dbc6864c5a0c49c06b4cf80e2f5a987d3be24b0c
Author: David Fifield <david@xxxxxxxxxxxxxxx>
Date:   Tue Jul 12 08:19:18 2011 -0700

    Catch socket errors when receiving on a yet-unlinked socket.
    
    Specifically I have seen ENOTCONN and ECONNRESET. It was possible to
    crash the connector by ending a stream with RST instead of FIN.
---
 connector.py |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/connector.py b/connector.py
index 0537b90..bb86046 100755
--- a/connector.py
+++ b/connector.py
@@ -307,7 +307,12 @@ def receive_unconnected(fd, label):
     True iff there was no error and the socket may still be used; otherwise, the
     socket will be closed before returning."""
 
-    data = fd.recv(1024)
+    try:
+        data = fd.recv(1024)
+    except socket.error, e:
+        log(u"Socket error from %s: %s" % (label, repr(str(e))))
+        fd.close()
+        return False
     if not data:
         log(u"EOF from unconnected %s %s with %d bytes buffered." % (label, format_addr(fd.getpeername()), len(fd.buf)))
         fd.close()



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits