summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAvery Pennarun <apenwarr@gmail.com>2010-12-31 23:46:47 -0800
committerAvery Pennarun <apenwarr@gmail.com>2010-12-31 23:46:47 -0800
commit651b607361280c92c5d8d92567fed90ce856261e (patch)
tree0fed7eb14c90376c416341ceea328701262178c1
parentdc9a5e63c7242ea3cf3ad317363d84c8f0ca2e6a (diff)
If ssh dies right after starting, we might get ECONNRESET.
Turn it into a nicer-looking fatal error instead of an exception dump.
-rw-r--r--client.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/client.py b/client.py
index 595c42a..092bc2a 100644
--- a/client.py
+++ b/client.py
@@ -125,14 +125,20 @@ def _main(listener, fw, ssh_cmd, remotename, python, seed_hosts, auto_nets):
(serverproc, serversock) = ssh.connect(ssh_cmd, remotename, python)
except socket.error, e:
if e.args[0] == errno.EPIPE:
- raise Fatal("failed to establish ssh session")
+ raise Fatal("failed to establish ssh session (1)")
else:
raise
mux = Mux(serversock, serversock)
handlers.append(mux)
expected = 'SSHUTTLE0001'
- initstring = serversock.recv(len(expected))
+ try:
+ initstring = serversock.recv(len(expected))
+ except socket.error, e:
+ if e.args[0] == errno.ECONNRESET:
+ raise Fatal("failed to establish ssh session (2)")
+ else:
+ raise
rv = serverproc.poll()
if rv: