]> code.citadel.org Git - citadel.git/blobdiff - citadel/utillib/citadel_ipc.c
* When attempting to connect() to the first available of multiple addresses, create...
[citadel.git] / citadel / utillib / citadel_ipc.c
index 785c45199a27676646cc6c7ff64e0d76ff50e604..01e890241f00212b3ee048830c0bb4445f1e94c0 100644 (file)
@@ -2658,24 +2658,26 @@ static int tcp_connectsock(char *host, char *service)
                return(-1);
        }
 
-       sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
-       if (sock < 0) {
-               //      CtdlLogPrintf(CTDL_ERR, "socket() failed: %s\n", strerror(errno));
-               return(-1);
-       }
-
        /*
         * Try all available addresses until we connect to one or until we run out.
         */
        struct addrinfo *ai;
        for (ai = res; ai != NULL; ai = ai->ai_next) {
                /* FIXME display the address to which we are trying to connect */
-               rc = connect(sock, res->ai_addr, res->ai_addrlen);
+fprintf(stderr, "TRYING...\n");
+
+               sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
+               if (sock < 0) return(-1);
+
+               rc = connect(sock, ai->ai_addr, ai->ai_addrlen);
                if (rc >= 0) {
+fprintf(stderr, "CONNECTED\n");
                        return(sock);
                }
                else {
+fprintf(stderr, "FAILED: %s\n", strerror(errno));
                        //      CtdlLogPrintf(CTDL_ERR, "connect() failed: %s\n", strerror(errno));
+                       close(sock);
                }
        }