]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - net.c
net: Further simplify makesock_addrinfo().
[paraslash.git] / net.c
diff --git a/net.c b/net.c
index 94610a84e2a3aa6b42ad9d5c11dbc03bc69cb306..28d11d664c937404e034d65760c00e5fa8cc1a3a 100644 (file)
--- a/net.c
+++ b/net.c
@@ -443,23 +443,20 @@ static int makesock_addrinfo(unsigned l4type, bool passive, struct addrinfo *ai,
                                close(sockfd);
                                PARA_ERROR_LOG("can not set SO_REUSEADDR: %s\n",
                                        para_strerror(-ret));
                                close(sockfd);
                                PARA_ERROR_LOG("can not set SO_REUSEADDR: %s\n",
                                        para_strerror(-ret));
-                               break;
+                               return ret;
                        }
                        if (bind(sockfd, ai->ai_addr, ai->ai_addrlen) < 0) {
                                close(sockfd);
                                continue;
                        }
                        }
                        if (bind(sockfd, ai->ai_addr, ai->ai_addrlen) < 0) {
                                close(sockfd);
                                continue;
                        }
-                       /* bind completed successfully */
-                       break;
+                       return sockfd;
                } else {
                        if (connect(sockfd, ai->ai_addr, ai->ai_addrlen) == 0)
                } else {
                        if (connect(sockfd, ai->ai_addr, ai->ai_addrlen) == 0)
-                               break; /* connection completed successfully */
+                               return sockfd;
+                       close(sockfd);
                }
                }
-               close(sockfd);
        }
        }
-       if (!ai)
-               return ret < 0? ret : -E_MAKESOCK;
-       return sockfd;
+       return -E_MAKESOCK;
 }
 
 /**
 }
 
 /**