]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
patch to let poll() recognize eof on more architectures
authorRoger Dingledine <arma@torproject.org>
Wed, 6 Aug 2003 18:38:46 +0000 (18:38 +0000)
committerRoger Dingledine <arma@torproject.org>
Wed, 6 Aug 2003 18:38:46 +0000 (18:38 +0000)
svn:r372

src/or/main.c

index 5c6f3386ee2bb7f2a23eaa401363d20c94ad46bc..5853fd6cea647fa6b5c0077c22b531b867d6957f 100644 (file)
@@ -274,7 +274,8 @@ static void conn_read(int i) {
     connection_free(conn);
     if(i<nfds) { /* we just replaced the one at i with a new one.
                     process it too. */
-      if(poll_array[i].revents & POLLIN) /* something to read */
+      if(poll_array[i].revents & POLLIN ||
+         poll_array[i].revents & POLLHUP ) /* something to read */
         conn_read(i);
     }
   }
@@ -552,8 +553,11 @@ static int do_main_loop(void) {
     if(poll_result > 0) { /* we have at least one connection to deal with */
       /* do all the reads first, so we can detect closed sockets */
       for(i=0;i<nfds;i++)
-        if(poll_array[i].revents & POLLIN) /* something to read */
+        if(poll_array[i].revents & POLLIN ||
+           poll_array[i].revents & POLLHUP ) /* something to read */
           conn_read(i); /* this also blows away broken connections */
+/* see http://www.greenend.org.uk/rjk/2001/06/poll.html for discussion
+ * of POLLIN vs POLLHUP */
 
       /* then do the writes */
       for(i=0;i<nfds;i++)