X-Git-Url: https://git.piment-noir.org/?p=deb_libnfs.git;a=blobdiff_plain;f=lib%2Fsocket.c;h=ea16d8c9e508f7ab247ec892b29196136717828c;hp=0f12697388779cd3f819bcf39c22227c0ddf225d;hb=fab61e3d0384e61553b39860b923d41bc0cf17b1;hpb=5670ec6e746ac6d1f110e160806c8d846b98b660 diff --git a/lib/socket.c b/lib/socket.c index 0f12697..ea16d8c 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -381,14 +381,17 @@ static int rpc_connect_sockaddr_async(struct rpc_context *rpc, struct sockaddr_s * to make the executable able to bind to a system port. */ if (1) { - int port; + static int port = 200; + int i; int one = 1; setsockopt(rpc->fd, SOL_SOCKET, SO_REUSEADDR, (char *)&one, sizeof(one)); - for (port = 200; port < 500; port++) { + for (i = 0; i < 500; i++) { struct sockaddr_in sin; + if(++port > 700) port = 200; + memset(&sin, 0, sizeof(sin)); sin.sin_port = htons(port); sin.sin_family = AF_INET; @@ -411,7 +414,7 @@ static int rpc_connect_sockaddr_async(struct rpc_context *rpc, struct sockaddr_s if (connect(rpc->fd, (struct sockaddr *)s, socksize) != 0 && errno != EINPROGRESS) #endif { - rpc_set_error(rpc, "connect() to server failed"); + rpc_set_error(rpc, "connect() to server failed. %s(%d)", strerror(errno), errno); return -1; }