summaryrefslogtreecommitdiff
path: root/sshconnect.c
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 /sshconnect.c
parent97c91f688fa8f8d67bbe2e0aa0feb912fc3c00ef (diff)
downloadopenssh-git-56e5e6ad115e9f9e072237a6cc95997d610d1bc0.tar.gz
- markus@cvs.openbsd.org 2006/04/20 09:47:59
[sshconnect.c] simplify; ok djm@
Diffstat (limited to 'sshconnect.c')
-rw-r--r--sshconnect.c29
1 files changed, 9 insertions, 20 deletions
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);