From 985b68e611e5902bd21ce3159e849b2dcd370afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Giampaolo=20Rodol=C3=A0?= Date: Wed, 15 Sep 2010 21:43:47 +0000 Subject: [PATCH] Store all errors signaling a disconnection into a global frozenset to save some computation time on recv() and send(). --- Lib/asyncore.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Lib/asyncore.py b/Lib/asyncore.py index edb1c7bf501..fbbee29bc3b 100644 --- a/Lib/asyncore.py +++ b/Lib/asyncore.py @@ -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: