Browse Source

Clear revents even when no events are received. Also, since everyone gets in exceptions, everyone gets to increment maxfd.

svn:r550
Nick Mathewson 20 years ago
parent
commit
3d7463d2b3
1 changed files with 4 additions and 5 deletions
  1. 4 5
      src/common/fakepoll.c

+ 4 - 5
src/common/fakepoll.c

@@ -49,12 +49,12 @@ poll(struct pollfd *ufds, unsigned int nfds, int timeout)
 
 	maxfd = -1;
 	for (idx = 0; idx < nfds; ++idx) {
+                ufds[idx].revents = 0;
 		fd = ufds[idx].fd;
-                if (ufds[idx].events) {
-                        if (fd > maxfd) 
-                                maxfd = fd;
+                if (fd > maxfd) {
+                  maxfd = fd;
 #ifdef MS_WINDOWS
-                        any_fds_set = 1;
+                  any_fds_set = 1;
 #endif
                 }
 		if (ufds[idx].events & POLLIN)
@@ -76,7 +76,6 @@ poll(struct pollfd *ufds, unsigned int nfds, int timeout)
 	r = 0;
 	for (idx = 0; idx < nfds; ++idx) {
 		fd = ufds[idx].fd;
-		ufds[idx].revents = 0;
 		if (FD_ISSET(fd, &readfds))
 			ufds[idx].revents |= POLLIN;
 		if (FD_ISSET(fd, &writefds))