aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/server/sws.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/tests/server/sws.c b/tests/server/sws.c
index ec11224f5..4879cfa8b 100644
--- a/tests/server/sws.c
+++ b/tests/server/sws.c
@@ -1536,18 +1536,18 @@ static void http_connect(curl_socket_t *infdp,
if(got_exit_signal)
break;
- rc = select((int)maxfd + 1, &input, &output, NULL, &timeout);
+ do {
+ rc = select((int)maxfd + 1, &input, &output, NULL, &timeout);
+ } while(rc < 0 && errno == EINTR && !got_exit_signal);
+
+ if(got_exit_signal)
+ break;
if(rc > 0) {
/* socket action */
- bool tcp_fin_wr;
+ bool tcp_fin_wr = FALSE;
timeout_count = 0;
- if(got_exit_signal)
- break;
-
- tcp_fin_wr = FALSE;
-
/* ---------------------------------------------------------- */
/* passive mode FTP may establish a secondary tunnel */
@@ -2289,7 +2289,13 @@ int main(int argc, char *argv[])
if(got_exit_signal)
goto sws_cleanup;
- rc = select((int)maxfd + 1, &input, &output, NULL, &timeout);
+ do {
+ rc = select((int)maxfd + 1, &input, &output, NULL, &timeout);
+ } while(rc < 0 && errno == EINTR && !got_exit_signal);
+
+ if(got_exit_signal)
+ goto sws_cleanup;
+
if(rc < 0) {
error = SOCKERRNO;
logmsg("select() failed with error: (%d) %s",
@@ -2297,9 +2303,6 @@ int main(int argc, char *argv[])
goto sws_cleanup;
}
- if(got_exit_signal)
- goto sws_cleanup;
-
if(rc == 0) {
/* Timed out - try again */
continue;