diff --git a/tests/server/sws.c b/tests/server/sws.c index de16199d2..ad851db89 100644 --- a/tests/server/sws.c +++ b/tests/server/sws.c @@ -879,6 +879,9 @@ static int send_doc(curl_socket_t sock, struct httprequest *req) } } + if(got_exit_signal) + return -1; + dump = fopen(RESPONSE_DUMP, "ab"); /* b is for windows-preparing */ if(!dump) { error = ERRNO; @@ -951,13 +954,27 @@ static int send_doc(curl_socket_t sock, struct httprequest *req) if(cmdsize > 0 ) { char command[32]; + int quarters; int num; ptr=cmd; do { if(2 == sscanf(ptr, "%31s %d", command, &num)) { if(!strcmp("wait", command)) { logmsg("Told to sleep for %d seconds", num); - sleep(num); /* wait this many seconds */ + quarters = num * 4; + while(quarters > 0) { + quarters--; + res = wait_ms(250); + if(got_exit_signal) + quarters = 0; + if(res) { + /* should not happen */ + error = SOCKERRNO; + logmsg("wait_ms() failed with error: (%d) %s", + error, strerror(error)); + quarters = 0; + } + } } else logmsg("Unknown command in reply command section"); diff --git a/tests/server/util.c b/tests/server/util.c index 6c5022406..7b00159ee 100644 --- a/tests/server/util.c +++ b/tests/server/util.c @@ -203,7 +203,7 @@ int wait_ms(int timeout_ms) if(r != -1) break; error = SOCKERRNO; - if(error == EINVAL) + if(error && (error != EINTR)) break; pending_ms = timeout_ms - (int)curlx_tvdiff(curlx_tvnow(), initial_tv); if(pending_ms <= 0)