diff options
author | 2015-02-20 21:51:45 -0800 | |
---|---|---|
committer | 2015-02-20 21:51:45 -0800 | |
commit | 6daab598f45202fd8abd8c36854dca411726f790 (patch) | |
tree | 45085ad9ba221bf482552874bca8c5e1578de2bd | |
parent | 1f8d92d3ec3d68e72211301f344bda5628cc15ce (diff) |
Check POLLHUP, POLLERR as required
-rw-r--r-- | src/core/iomgr/pollset_multipoller_with_poll_posix.c | 4 | ||||
-rw-r--r-- | src/core/iomgr/pollset_posix.c | 8 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/core/iomgr/pollset_multipoller_with_poll_posix.c b/src/core/iomgr/pollset_multipoller_with_poll_posix.c index fbacad1e99..7570ff18c5 100644 --- a/src/core/iomgr/pollset_multipoller_with_poll_posix.c +++ b/src/core/iomgr/pollset_multipoller_with_poll_posix.c @@ -183,10 +183,10 @@ static int multipoll_with_poll_pollset_maybe_work( grpc_pollset_kick_consume(&pollset->kick_state); } for (i = 1; i < np; i++) { - if (h->pfds[i].revents & POLLIN) { + if (h->pfds[i].revents & (POLLIN | POLLHUP | POLLERR)) { grpc_fd_become_readable(h->watchers[i].fd, allow_synchronous_callback); } - if (h->pfds[i].revents & POLLOUT) { + if (h->pfds[i].revents & (POLLOUT | POLLHUP | POLLERR)) { grpc_fd_become_writable(h->watchers[i].fd, allow_synchronous_callback); } } diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index 05b78adeb6..87e7aa85ee 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -63,9 +63,9 @@ static void backup_poller(void *p) { gpr_mu_lock(&g_backup_pollset.mu); while (g_shutdown_backup_poller == 0) { gpr_timespec next_poll = gpr_time_add(last_poll, delta); - grpc_pollset_work(&g_backup_pollset, next_poll); + grpc_pollset_work(&g_backup_pollset, gpr_time_add(gpr_now(), gpr_time_from_seconds(1))); gpr_mu_unlock(&g_backup_pollset.mu); - gpr_sleep_until(next_poll); + /*gpr_sleep_until(next_poll);*/ gpr_mu_lock(&g_backup_pollset.mu); last_poll = next_poll; } @@ -277,10 +277,10 @@ static int unary_poll_pollset_maybe_work(grpc_pollset *pollset, if (pfd[0].revents & POLLIN) { grpc_pollset_kick_consume(&pollset->kick_state); } - if (pfd[1].revents & POLLIN) { + if (pfd[1].revents & (POLLIN | POLLHUP | POLLERR)) { grpc_fd_become_readable(fd, allow_synchronous_callback); } - if (pfd[1].revents & POLLOUT) { + if (pfd[1].revents & (POLLOUT | POLLHUP | POLLERR)) { grpc_fd_become_writable(fd, allow_synchronous_callback); } } |