diff options
author | Josiah Carlson <josiah.carlson@gmail.com> | 2009-06-03 19:48:02 (GMT) |
---|---|---|
committer | Josiah Carlson <josiah.carlson@gmail.com> | 2009-06-03 19:48:02 (GMT) |
commit | 0abc64d71986902c5ff7e7b9d9fd5c83428ca80b (patch) | |
tree | 0cf663fc806675aaf28ae6aa50497f345afc90f4 | |
parent | b1614a7b6705f939b29df4045e591fcf53a8611b (diff) | |
download | cpython-0abc64d71986902c5ff7e7b9d9fd5c83428ca80b.zip cpython-0abc64d71986902c5ff7e7b9d9fd5c83428ca80b.tar.gz cpython-0abc64d71986902c5ff7e7b9d9fd5c83428ca80b.tar.bz2 |
This fixes bug 5798 on OS X.
This should also fix disconnect behavior cross-platform.
-rw-r--r-- | Lib/asyncore.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/Lib/asyncore.py b/Lib/asyncore.py index e4f9bf9..db426d7 100644 --- a/Lib/asyncore.py +++ b/Lib/asyncore.py @@ -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: |