summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2006-04-23 12:08:59 +1000
committerDamien Miller <djm@mindrot.org>2006-04-23 12:08:59 +1000
commit56e5e6ad115e9f9e072237a6cc95997d610d1bc0 (patch)
treee096e1ef906a5b8e35339fe37885ef15a6dc1a0e
parent97c91f688fa8f8d67bbe2e0aa0feb912fc3c00ef (diff)
downloadopenssh-git-56e5e6ad115e9f9e072237a6cc95997d610d1bc0.tar.gz
- markus@cvs.openbsd.org 2006/04/20 09:47:59
[sshconnect.c] simplify; ok djm@
-rw-r--r--ChangeLog5
-rw-r--r--sshconnect.c29
2 files changed, 13 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog
index 8131cd6c..552e780e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -52,6 +52,9 @@
replace the last non-sig_atomic_t flag used in a signal handler with a
sig_atomic_t, unfortunately with some knock-on effects in other (non-
signal) contexts in which it is used; ok markus@
+ - markus@cvs.openbsd.org 2006/04/20 09:47:59
+ [sshconnect.c]
+ simplify; ok djm@
20060421
- (djm) [Makefile.in configure.ac session.c sshpty.c]
@@ -4563,4 +4566,4 @@
- (djm) Trim deprecated options from INSTALL. Mention UsePAM
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
-$Id: ChangeLog,v 1.4312 2006/04/23 02:08:37 djm Exp $
+$Id: ChangeLog,v 1.4313 2006/04/23 02:08:59 djm Exp $
diff --git a/sshconnect.c b/sshconnect.c
index 5cf10779..5f2ad1cf 100644
--- a/sshconnect.c
+++ b/sshconnect.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshconnect.c,v 1.180 2006/03/25 13:17:02 djm Exp $ */
+/* $OpenBSD: sshconnect.c,v 1.181 2006/04/20 09:47:59 markus Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -306,17 +306,14 @@ ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
fatal("%s: %.100s: %s", __progname, host,
gai_strerror(gaierr));
- /*
- * Try to connect several times. On some machines, the first time
- * will sometimes fail. In general socket code appears to behave
- * quite magically on many machines.
- */
- for (attempt = 0; ;) {
+ for (attempt = 0; attempt < connection_attempts; attempt++) {
if (attempt > 0)
debug("Trying again...");
- /* Loop through addresses for this host, and try each one in
- sequence until the connection succeeds. */
+ /*
+ * Loop through addresses for this host, and try each one in
+ * sequence until the connection succeeds.
+ */
for (ai = aitop; ai; ai = ai->ai_next) {
if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6)
continue;
@@ -343,21 +340,13 @@ ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
} else {
debug("connect to address %s port %s: %s",
ntop, strport, strerror(errno));
- /*
- * Close the failed socket; there appear to
- * be some problems when reusing a socket for
- * which connect() has already returned an
- * error.
- */
close(sock);
+ sock = -1;
}
}
- if (ai)
+ if (sock != -1)
break; /* Successful connection. */
- attempt++;
- if (attempt >= connection_attempts)
- break;
/* Sleep a moment before retrying. */
sleep(1);
}
@@ -365,7 +354,7 @@ ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
freeaddrinfo(aitop);
/* Return failure if we didn't get a successful connection. */
- if (attempt >= connection_attempts) {
+ if (sock == -1) {
error("ssh: connect to host %s port %s: %s",
host, strport, strerror(errno));
return (-1);