diff options
Diffstat (limited to 'tests/server/sockfilt.c')
-rw-r--r-- | tests/server/sockfilt.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/tests/server/sockfilt.c b/tests/server/sockfilt.c index ab6682ec5..e8d701393 100644 --- a/tests/server/sockfilt.c +++ b/tests/server/sockfilt.c @@ -399,10 +399,17 @@ static curl_socket_t sockdaemon(curl_socket_t sock, #endif /* ENABLE_IPV6 */ int flag = 1; int rc; - - if (setsockopt - (sock, SOL_SOCKET, SO_REUSEADDR, (void *)&flag, - sizeof(flag)) < 0) { + int maxretr = 100; + + rc = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, + (void *)&flag, sizeof(flag)); + while ((rc < 0) && maxretr) { + maxretr--; + go_sleep(10); + rc = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, + (void *)&flag, sizeof(flag)); + } + if (rc < 0) { perror("setsockopt(SO_REUSEADDR)"); } |