diff options
author | dtucker@openbsd.org <dtucker@openbsd.org> | 2019-02-01 03:52:23 +0000 |
---|---|---|
committer | Darren Tucker <dtucker@dtucker.net> | 2019-02-01 18:55:11 +1100 |
commit | 483b3b638500fd498b4b529356e5a0e18cf76891 (patch) | |
tree | 4b89f79f701027ab6d2cfcbc5d0f8aab81896496 | |
parent | 5f004620fdc1b2108139300ee12f4014530fb559 (diff) |
upstream: Save connection timeout and restore for 2nd and
subsequent attempts, preventing them from having no timeout. bz#2918, ok
djm@
OpenBSD-Commit-ID: 4977f1d0521d9b6bba0c9a20d3d226cefac48292
-rw-r--r-- | sshconnect.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sshconnect.c b/sshconnect.c index 955671b4e..eb5139fc7 100644 --- a/sshconnect.c +++ b/sshconnect.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sshconnect.c,v 1.312 2019/01/24 17:00:29 dtucker Exp $ */ | 1 | /* $OpenBSD: sshconnect.c,v 1.313 2019/02/01 03:52:23 dtucker Exp $ */ |
2 | /* | 2 | /* |
3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
@@ -457,7 +457,7 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop, | |||
457 | struct sockaddr_storage *hostaddr, u_short port, int family, | 457 | struct sockaddr_storage *hostaddr, u_short port, int family, |
458 | int connection_attempts, int *timeout_ms, int want_keepalive) | 458 | int connection_attempts, int *timeout_ms, int want_keepalive) |
459 | { | 459 | { |
460 | int on = 1; | 460 | int on = 1, saved_timeout_ms = *timeout_ms; |
461 | int oerrno, sock = -1, attempt; | 461 | int oerrno, sock = -1, attempt; |
462 | char ntop[NI_MAXHOST], strport[NI_MAXSERV]; | 462 | char ntop[NI_MAXHOST], strport[NI_MAXSERV]; |
463 | struct addrinfo *ai; | 463 | struct addrinfo *ai; |
@@ -501,6 +501,7 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop, | |||
501 | continue; | 501 | continue; |
502 | } | 502 | } |
503 | 503 | ||
504 | *timeout_ms = saved_timeout_ms; | ||
504 | if (timeout_connect(sock, ai->ai_addr, ai->ai_addrlen, | 505 | if (timeout_connect(sock, ai->ai_addr, ai->ai_addrlen, |
505 | timeout_ms) >= 0) { | 506 | timeout_ms) >= 0) { |
506 | /* Successful connection. */ | 507 | /* Successful connection. */ |