]> granicus.if.org Git - python/commitdiff
This fixes bug 5798 on OS X.
authorJosiah Carlson <josiah.carlson@gmail.com>
Wed, 3 Jun 2009 19:48:02 +0000 (19:48 +0000)
committerJosiah Carlson <josiah.carlson@gmail.com>
Wed, 3 Jun 2009 19:48:02 +0000 (19:48 +0000)
This should also fix disconnect behavior cross-platform.

Lib/asyncore.py

index e4f9bf932050f5acb86303554d0bf1f0609023f9..db426d71a8b1fadaaedd1902401661fc05ca53b1 100644 (file)
@@ -100,10 +100,15 @@ def readwrite(obj, flags):
             obj.handle_read_event()
         if flags & select.POLLOUT:
             obj.handle_write_event()
-        if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
-            obj.handle_close()
         if flags & select.POLLPRI:
             obj.handle_expt_event()
+        if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
+            obj.handle_close()
+    except socket.error as e:
+        if e.args[0] not in (EBADF, ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED):
+            obj.handle_error()
+        else:
+            obj.handle_close()
     except _reraised_exceptions:
         raise
     except: