diff --git a/server.py b/server.py index 89a0f7f..c62c8b5 100644 --- a/server.py +++ b/server.py @@ -130,7 +130,7 @@ class DnsProxy(Handler): try: self.sock.send(self.request) except socket.error, e: - if e.args[0] in [errno.ECONNREFUSED, errno.EHOSTUNREACH]: + if e.args[0] in ssnet.NET_ERRS: # might have been spurious; try again. # Note: these errors sometimes are reported by recv(), # and sometimes by send(). We have to catch both. @@ -145,7 +145,7 @@ class DnsProxy(Handler): try: data = self.sock.recv(4096) except socket.error, e: - if e.args[0] in [errno.ECONNREFUSED, errno.EHOSTUNREACH]: + if e.args[0] in ssnet.NET_ERRS: # might have been spurious; try again. # Note: these errors sometimes are reported by recv(), # and sometimes by send(). We have to catch both. diff --git a/ssnet.py b/ssnet.py index a987562..b6d73c2 100644 --- a/ssnet.py +++ b/ssnet.py @@ -40,7 +40,11 @@ cmd_to_name = { CMD_DNS_REQ: 'DNS_REQ', CMD_DNS_RESPONSE: 'DNS_RESPONSE', } - + + +NET_ERRS = [errno.ECONNREFUSED, errno.ETIMEDOUT, + errno.EHOSTUNREACH, errno.ENETUNREACH, + errno.EHOSTDOWN, errno.ENETDOWN] def _add(l, elem): @@ -151,9 +155,7 @@ class SockWrapper: elif e.args[0] == errno.EISCONN: # connected successfully (BSD) self.connect_to = None - elif e.args[0] in [errno.ECONNREFUSED, errno.ETIMEDOUT, - errno.EHOSTUNREACH, errno.ENETUNREACH, - errno.EACCES, errno.EPERM]: + elif e.args[0] in NET_ERRS + [errno.EACCES, errno.EPERM]: # a "normal" kind of error self.connect_to = None self.seterr(e)