summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAvery Pennarun <apenwarr@gmail.com>2011-03-19 22:48:15 -0700
committerAvery Pennarun <apenwarr@gmail.com>2011-03-19 22:48:15 -0700
commitcfb2592346d206c9f0b7307375665a5697e86043 (patch)
treedb6e353aa19776ccee5a2ebf86310c8835a66924
parent2e8381ecda445f07587b1f475031cbce01657c4d (diff)
server.py: handle (throw away) ECONNREFUSED from the DNS server.sshuttle-0.52
This might happen occasionally on a flakey network. Reported by Ed Maste.
-rw-r--r--server.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/server.py b/server.py
index 45bc2fc..37daf77 100644
--- a/server.py
+++ b/server.py
@@ -119,7 +119,14 @@ class DnsProxy(Handler):
self.sock.send(request)
def callback(self):
- data = self.sock.recv(4096)
+ try:
+ data = self.sock.recv(4096)
+ except socket.error, e:
+ if e.args[0] == errno.ECONNREFUSED:
+ debug2('DNS response: ignoring ECONNREFUSED.\n')
+ return # might have been spurious; wait for a real answer
+ else:
+ raise
debug2('DNS response: %d bytes\n' % len(data))
self.mux.send(self.chan, ssnet.CMD_DNS_RESPONSE, data)
self.ok = False