diff options
Diffstat (limited to 'Lib')
| -rw-r--r-- | Lib/asyncore.py | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/Lib/asyncore.py b/Lib/asyncore.py index 861495ddfc..00464a9427 100644 --- a/Lib/asyncore.py +++ b/Lib/asyncore.py @@ -52,7 +52,11 @@ import sys  import time  import os  from errno import EALREADY, EINPROGRESS, EWOULDBLOCK, ECONNRESET, EINVAL, \ -     ENOTCONN, ESHUTDOWN, EINTR, EISCONN, EBADF, ECONNABORTED, errorcode +     ENOTCONN, ESHUTDOWN, EINTR, EISCONN, EBADF, ECONNABORTED, EPIPE, \ +     EAGAIN, errorcode + +_DISCONNECTED = frozenset((ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED, EPIPE, +                           EBADF))  try:      socket_map @@ -107,7 +111,7 @@ def readwrite(obj, flags):          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): +        if e.args[0] not in _DISCONNECTED:              obj.handle_error()          else:              obj.handle_close() @@ -349,7 +353,7 @@ class dispatcher:          except TypeError:              return None          except socket.error as why: -            if why.args[0] in (EWOULDBLOCK, ECONNABORTED): +            if why.args[0] in (EWOULDBLOCK, ECONNABORTED, EAGAIN):                  return None              else:                  raise  | 
