[Checkins] SVN: zc.resumelb/trunk/src/zc/resumelb/util.py Disconnecting can cause errors to be raised on recv. Who knew?

jim cvs-admin at zope.org
Tue Mar 20 16:03:38 UTC 2012


Log message for revision 124650:
  Disconnecting can cause errors to be raised on recv. Who knew?
  

Changed:
  U   zc.resumelb/trunk/src/zc/resumelb/util.py

-=-
Modified: zc.resumelb/trunk/src/zc/resumelb/util.py
===================================================================
--- zc.resumelb/trunk/src/zc/resumelb/util.py	2012-03-20 15:50:01 UTC (rev 124649)
+++ zc.resumelb/trunk/src/zc/resumelb/util.py	2012-03-20 16:03:35 UTC (rev 124650)
@@ -8,7 +8,7 @@
 logger = logging.getLogger(__name__)
 
 disconnected_errors = (errno.EPIPE, errno.ECONNRESET, errno.ENOTCONN,
-                 errno.ESHUTDOWN, errno.ECONNABORTED)
+                       errno.ESHUTDOWN, errno.ECONNABORTED)
 
 class Disconnected(Exception):
     pass
@@ -16,7 +16,15 @@
 def read_message(sock):
     data = ''
     while len(data) < 8:
-        recieved = sock.recv(8-len(data))
+        try:
+            recieved = sock.recv(8-len(data))
+        except socket.error, err:
+            if err.args[0] in disconnected_errors:
+                logger.debug("write_message disconnected %s", sock)
+                raise Disconnected()
+            else:
+                raise
+
         if not recieved:
             logger.info("read_message disconnected %s", sock)
             raise Disconnected()



More information about the checkins mailing list