Store all errors signaling a disconnection into a global frozenset to save some computation time on recv() and send().

This commit is contained in:
Giampaolo Rodolà 2010-09-15 21:43:47 +00:00
parent 7d49bc9911
commit 985b68e611
1 changed files with 4 additions and 2 deletions

View File

@ -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: