|
@@ -68,6 +68,9 @@ static int bind_addr(const char *hostname, const char *service, int socktype, st
|
68
|
68
|
while (res) {
|
69
|
69
|
*sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
|
70
|
70
|
if (*sock > -1) {
|
|
71
|
+ int on = 1;
|
|
72
|
+ setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
|
|
73
|
+ set_sock_nonblock(*sock);
|
71
|
74
|
if (bind(*sock, res->ai_addr, res->ai_addrlen) == 0) {
|
72
|
75
|
memcpy(addr, res->ai_addr, sizeof(*addr));
|
73
|
76
|
*addrlen = res->ai_addrlen;
|
|
@@ -87,12 +90,6 @@ static int bind_addr(const char *hostname, const char *service, int socktype, st
|
87
|
90
|
OUT:
|
88
|
91
|
freeaddrinfo(ressave);
|
89
|
92
|
|
90
|
|
- if (*sock > -1) {
|
91
|
|
- int on = 1;
|
92
|
|
- setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
|
93
|
|
- set_sock_nonblock(*sock);
|
94
|
|
- }
|
95
|
|
-
|
96
|
93
|
return ret;
|
97
|
94
|
}
|
98
|
95
|
|