mirror of https://github.com/python/cpython
Store all errors signaling a disconnection into a global frozenset to save some computation time on recv() and send().
This commit is contained in:
parent
7d49bc9911
commit
985b68e611
|
@ -56,6 +56,8 @@ import os
|
|||
from errno import EALREADY, EINPROGRESS, EWOULDBLOCK, ECONNRESET, EINVAL, \
|
||||
ENOTCONN, ESHUTDOWN, EINTR, EISCONN, EBADF, ECONNABORTED, errorcode
|
||||
|
||||
DISCONNECTED = frozenset((ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED))
|
||||
|
||||
try:
|
||||
socket_map
|
||||
except NameError:
|
||||
|
@ -364,7 +366,7 @@ class dispatcher:
|
|||
except socket.error as why:
|
||||
if why.args[0] == EWOULDBLOCK:
|
||||
return 0
|
||||
elif why.args[0] in (ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED):
|
||||
elif why.args[0] in DISCONNECTED:
|
||||
self.handle_close()
|
||||
return 0
|
||||
else:
|
||||
|
@ -382,7 +384,7 @@ class dispatcher:
|
|||
return data
|
||||
except socket.error as why:
|
||||
# winsock sometimes throws ENOTCONN
|
||||
if why.args[0] in [ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED]:
|
||||
if why.args[0] in DISCONNECTED:
|
||||
self.handle_close()
|
||||
return b''
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue