poll: handle POLLNVAL
This commit is contained in:
		| @@ -59,10 +59,12 @@ namespace ix | |||||||
|         // |         // | ||||||
|         nfds_t nfds = 1; |         nfds_t nfds = 1; | ||||||
|         struct pollfd fds[2]; |         struct pollfd fds[2]; | ||||||
|         memset(fds, 0 , sizeof(fds)); |         memset(fds, 0, sizeof(fds)); | ||||||
|  |  | ||||||
|         fds[0].fd = sockfd; |         fds[0].fd = sockfd; | ||||||
|         fds[0].events = (readyToRead) ? POLLIN : POLLOUT; |         fds[0].events = (readyToRead) ? POLLIN : POLLOUT; | ||||||
|  |  | ||||||
|  |          // this is ignored by poll, but our select based poll wrapper on Windows needs it | ||||||
|         fds[0].events |= POLLERR; |         fds[0].events |= POLLERR; | ||||||
|  |  | ||||||
|         // File descriptor used to interrupt select when needed |         // File descriptor used to interrupt select when needed | ||||||
| @@ -133,7 +135,8 @@ namespace ix | |||||||
|             } |             } | ||||||
| #endif | #endif | ||||||
|         } |         } | ||||||
|         else if (sockfd != -1 && (fds[0].revents & POLLERR || fds[0].revents & POLLHUP)) |         else if (sockfd != -1 && (fds[0].revents & POLLERR || fds[0].revents & POLLHUP || | ||||||
|  |                                   fds[0].revents & POLLNVAL)) | ||||||
|         { |         { | ||||||
|             pollResult = PollResultType::Error; |             pollResult = PollResultType::Error; | ||||||
|         } |         } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user