]> andersk Git - openssh.git/blobdiff - sshconnect.c
[buildpkg.sh.in] Last minute fix didn't make it in the .in file. :-(
[openssh.git] / sshconnect.c
index 5972e2ba963bc37fa9138fd5ae04e0d07e7bcd84..95bb527b2a123d3f4b051e1a87666135aed5481f 100644 (file)
@@ -13,7 +13,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: sshconnect.c,v 1.153 2003/11/12 16:39:58 jakob Exp $");
+RCSID("$OpenBSD: sshconnect.c,v 1.157 2004/05/08 00:21:31 djm Exp $");
 
 #include <openssl/bn.h>
 
@@ -31,7 +31,6 @@ RCSID("$OpenBSD: sshconnect.c,v 1.153 2003/11/12 16:39:58 jakob Exp $");
 #include "readconf.h"
 #include "atomicio.h"
 #include "misc.h"
-#include "readpass.h"
 
 #include "dns.h"
 
@@ -74,7 +73,7 @@ ssh_proxy_connect(const char *host, u_short port, const char *proxy_command)
         * Build the final command string in the buffer by making the
         * appropriate substitutions to the given proxy command.
         *
-        * Use "exec" to avoid "sh -c" processes on some platforms 
+        * Use "exec" to avoid "sh -c" processes on some platforms
         * (e.g. Solaris)
         */
        buffer_init(&command);
@@ -231,12 +230,12 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
        if (timeout <= 0)
                return (connect(sockfd, serv_addr, addrlen));
 
-       if (fcntl(sockfd, F_SETFL, O_NONBLOCK) < 0)
-               return (-1);
-
+       set_nonblock(sockfd);
        rc = connect(sockfd, serv_addr, addrlen);
-       if (rc == 0)
+       if (rc == 0) {
+               unset_nonblock(sockfd);
                return (0);
+       }
        if (errno != EINPROGRESS)
                return (-1);
 
@@ -261,15 +260,15 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
                break;
        case -1:
                /* Select error */
-               debug("select: %s", strerror(errno));
+               debug("select: %s", strerror(errno));
                break;
        case 1:
                /* Completed or failed */
                optval = 0;
                optlen = sizeof(optval);
-               if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval, 
+               if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval,
                    &optlen) == -1) {
-                       debug("getsockopt: %s", strerror(errno));
+                       debug("getsockopt: %s", strerror(errno));
                        break;
                }
                if (optval != 0) {
@@ -277,6 +276,7 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
                        break;
                }
                result = 0;
+               unset_nonblock(sockfd);
                break;
        default:
                /* Should not occur */
@@ -415,8 +415,8 @@ ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
 
        debug("Connection established.");
 
-       /* Set keepalives if requested. */
-       if (options.keepalives &&
+       /* Set SO_KEEPALIVE if requested. */
+       if (options.tcp_keep_alive &&
            setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (void *)&on,
            sizeof(on)) < 0)
                error("setsockopt SO_KEEPALIVE: %.100s", strerror(errno));
This page took 0.034786 seconds and 4 git commands to generate.