summaryrefslogtreecommitdiff
path: root/dispatch.c
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2015-01-28 22:05:31 +0000
committerDamien Miller <djm@mindrot.org>2015-01-29 09:08:07 +1100
commit9125525c37bf73ad3ee4025520889d2ce9d10f29 (patch)
treeaf26728c760d9de8306bebbe7af633146b659cfe /dispatch.c
parentfae7bbe544cba7a9e5e4ab47ff6faa3d978646eb (diff)
upstream commit
avoid fatal() calls in packet code makes ssh-keyscan more reliable against server failures ok dtucker@ markus@
Diffstat (limited to 'dispatch.c')
-rw-r--r--dispatch.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/dispatch.c b/dispatch.c
index 70fa84f70..9ff5e3daf 100644
--- a/dispatch.c
+++ b/dispatch.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: dispatch.c,v 1.23 2015/01/19 20:07:45 markus Exp $ */ 1/* $OpenBSD: dispatch.c,v 1.24 2015/01/28 22:05:31 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -137,6 +137,18 @@ ssh_dispatch_run_fatal(struct ssh *ssh, int mode, volatile sig_atomic_t *done,
137{ 137{
138 int r; 138 int r;
139 139
140 if ((r = ssh_dispatch_run(ssh, mode, done, ctxt)) != 0) 140 if ((r = ssh_dispatch_run(ssh, mode, done, ctxt)) != 0) {
141 fatal("%s: %s", __func__, ssh_err(r)); 141 switch (r) {
142 case SSH_ERR_CONN_CLOSED:
143 logit("Connection closed by %.200s",
144 ssh_remote_ipaddr(ssh));
145 cleanup_exit(255);
146 case SSH_ERR_CONN_TIMEOUT:
147 logit("Connection to %.200s timed out while "
148 "waiting to read", ssh_remote_ipaddr(ssh));
149 cleanup_exit(255);
150 default:
151 fatal("%s: %s", __func__, ssh_err(r));
152 }
153 }
142} 154}