Oops. I broke the flow with the previous commit.
authorDaniel Stenberg <daniel@haxx.se>
Mon, 9 Feb 2004 11:40:00 +0000 (11:40 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 9 Feb 2004 11:40:00 +0000 (11:40 +0000)
lib/connect.c

index e6bfbda..9c140c9 100644 (file)
@@ -216,7 +216,7 @@ static CURLcode bindlocal(struct connectdata *conn,
                           int sockfd)
 {
 #ifdef HAVE_INET_NTOA
-
+  bool bindworked = FALSE;
   struct SessionHandle *data = conn->data;
 
   /*************************************************************
@@ -284,6 +284,8 @@ static CURLcode bindlocal(struct connectdata *conn,
         if( bind(sockfd, addr->ai_addr, addr->ai_addrlen) >= 0) {
           /* we succeeded to bind */
           struct sockaddr_in6 add;
+
+          bindworked = TRUE;
        
           size = sizeof(add);
           if(getsockname(sockfd, (struct sockaddr *) &add,
@@ -306,6 +308,8 @@ static CURLcode bindlocal(struct connectdata *conn,
             /* we succeeded to bind */
             struct sockaddr_in add;
        
+            bindworked = TRUE;
+            
             size = sizeof(add);
             if(getsockname(sockfd, (struct sockaddr *) &add,
                            (socklen_t *)&size)<0) {
@@ -315,7 +319,7 @@ static CURLcode bindlocal(struct connectdata *conn,
           }
         }
 #endif
-        else {
+        if(!bindworked) {
           switch(errno) {
           case EBADF:
             failf(data, "Invalid descriptor: %d", errno);