aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/server/sws.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/tests/server/sws.c b/tests/server/sws.c
index 49790f03a..b0f2a83d6 100644
--- a/tests/server/sws.c
+++ b/tests/server/sws.c
@@ -2206,6 +2206,7 @@ int main(int argc, char *argv[])
fd_set output;
struct timeval timeout = {0, 250000L}; /* 250 ms */
curl_socket_t maxfd = (curl_socket_t)-1;
+ int active;
/* Clear out closed sockets */
for(socket_idx = num_sockets - 1; socket_idx >= 1; --socket_idx) {
@@ -2253,6 +2254,7 @@ int main(int argc, char *argv[])
/* Timed out - try again */
continue;
}
+ active = rc; /* a positive number */
/* Check if the listening socket is ready to accept */
if(FD_ISSET(all_sockets[0], &input)) {
@@ -2264,11 +2266,13 @@ int main(int argc, char *argv[])
if(CURL_SOCKET_BAD == msgsock)
goto sws_cleanup;
} while(msgsock > 0);
+ active--;
}
/* Service all connections that are ready */
- for(socket_idx = 1; socket_idx < num_sockets; ++socket_idx) {
+ for(socket_idx = 1; (socket_idx < num_sockets) && active; ++socket_idx) {
if(FD_ISSET(all_sockets[socket_idx], &input)) {
+ active--;
if(got_exit_signal)
goto sws_cleanup;