aboutsummaryrefslogtreecommitdiff
path: root/tests/server/sockfilt.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/server/sockfilt.c')
-rw-r--r--tests/server/sockfilt.c15
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)");
}