mirror of
https://github.com/curl/curl.git
synced 2025-04-18 16:30:45 +08:00
sws: handle EINTR when calling select()
Closes https://github.com/curl/curl/pull/2808
This commit is contained in:
parent
ea6f57696c
commit
3db628360c
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user