]> andersk Git - openssh.git/blobdiff - sshconnect.c
[configure.ac] Make sure -lcrypto is before -lsocket for sco3. ok mouring@
[openssh.git] / sshconnect.c
index 5972e2ba963bc37fa9138fd5ae04e0d07e7bcd84..dfeddd39eec51b02c65a5db9629eeb5e1484c12f 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.156 2004/01/25 03:49:09 djm Exp $");
 
 #include <openssl/bn.h>
 
@@ -74,7 +74,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 +231,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 +261,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 +277,7 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
                        break;
                }
                result = 0;
+               unset_nonblock(sockfd);
                break;
        default:
                /* Should not occur */
@@ -415,8 +416,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.112591 seconds and 4 git commands to generate.