]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
This fixes bug 5798 on OS X.
authorJosiah Carlson <josiah.carlson@gmail.com>
Wed, 3 Jun 2009 19:46:21 +0000 (19:46 +0000)
committerJosiah Carlson <josiah.carlson@gmail.com>
Wed, 3 Jun 2009 19:46:21 +0000 (19:46 +0000)
This should also fix disconnect behavior cross-platform.

Lib/asyncore.py

index 4f1153b760b68db056917f39859379fbaa643e69..3672db9f0fd8fbee91f96bc6660b26cdf9095dc1 100644 (file)
@@ -101,10 +101,16 @@ 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, e:
+        if e.args[0] not in (EBADF, ECONNRESET, ENOTCONN, ESHUTDOWN,
+ECONNABORTED):
+            obj.handle_error()
+        else:
+            obj.handle_close()
     except _reraised_exceptions:
         raise
     except: