gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnurl] 40/153: sws: handle EINTR when calling select()


From: gnunet
Subject: [GNUnet-SVN] [gnurl] 40/153: sws: handle EINTR when calling select()
Date: Tue, 11 Sep 2018 12:51:51 +0200

This is an automated email from the git hooks/post-receive script.

ng0 pushed a commit to branch master
in repository gnurl.

commit 3db628360ced36ad73ab75036d6fed9738f59871
Author: Michael Kaufmann <address@hidden>
AuthorDate: Sun Jul 29 13:47:31 2018 +0200

    sws: handle EINTR when calling select()
    
    Closes https://github.com/curl/curl/pull/2808
---
 tests/server/sws.c | 25 ++++++++++++++-----------
 1 file 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;

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]