Commit 3db62836 authored by Michael Kaufmann's avatar Michael Kaufmann Committed by Jay Satiro
Browse files

sws: handle EINTR when calling select()

parent ea6f5769
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -1536,17 +1536,17 @@ static void http_connect(curl_socket_t *infdp,
    if(got_exit_signal)
      break;

    do {
      rc = select((int)maxfd + 1, &input, &output, NULL, &timeout);

    if(rc > 0) {
      /* socket action */
      bool tcp_fin_wr;
      timeout_count = 0;
    } while(rc < 0 && errno == EINTR && !got_exit_signal);

    if(got_exit_signal)
      break;

      tcp_fin_wr = FALSE;
    if(rc > 0) {
      /* socket action */
      bool tcp_fin_wr = FALSE;
      timeout_count = 0;

      /* ---------------------------------------------------------- */

@@ -2289,7 +2289,13 @@ int main(int argc, char *argv[])
    if(got_exit_signal)
      goto sws_cleanup;

    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;