summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordjm <djm@openbsd.org>2015-01-28 22:05:31 +0000
committerdjm <djm@openbsd.org>2015-01-28 22:05:31 +0000
commit4f1a91fa371762c79b61fbc77575be7f466ce1d0 (patch)
tree098d7627efb7233c805adb60edbe2edf44abea34
parentWhen comparing the LSA with the Ack, also check the age field. This (diff)
downloadwireguard-openbsd-4f1a91fa371762c79b61fbc77575be7f466ce1d0.tar.xz
wireguard-openbsd-4f1a91fa371762c79b61fbc77575be7f466ce1d0.zip
avoid fatal() calls in packet code
makes ssh-keyscan more reliable against server failures ok dtucker@ markus@
-rw-r--r--usr.bin/ssh/dispatch.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/usr.bin/ssh/dispatch.c b/usr.bin/ssh/dispatch.c
index d9b4591765e..f520029c1ac 100644
--- a/usr.bin/ssh/dispatch.c
+++ b/usr.bin/ssh/dispatch.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dispatch.c,v 1.23 2015/01/19 20:07:45 markus Exp $ */
+/* $OpenBSD: dispatch.c,v 1.24 2015/01/28 22:05:31 djm Exp $ */
/*
* Copyright (c) 2000 Markus Friedl. All rights reserved.
*
@@ -135,6 +135,18 @@ ssh_dispatch_run_fatal(struct ssh *ssh, int mode, volatile sig_atomic_t *done,
{
int r;
- if ((r = ssh_dispatch_run(ssh, mode, done, ctxt)) != 0)
- fatal("%s: %s", __func__, ssh_err(r));
+ if ((r = ssh_dispatch_run(ssh, mode, done, ctxt)) != 0) {
+ switch (r) {
+ case SSH_ERR_CONN_CLOSED:
+ logit("Connection closed by %.200s",
+ ssh_remote_ipaddr(ssh));
+ cleanup_exit(255);
+ case SSH_ERR_CONN_TIMEOUT:
+ logit("Connection to %.200s timed out while "
+ "waiting to read", ssh_remote_ipaddr(ssh));
+ cleanup_exit(255);
+ default:
+ fatal("%s: %s", __func__, ssh_err(r));
+ }
+ }
}