diff options
author | Yash Tibrewal <yashkt@google.com> | 2018-04-05 19:39:10 -0700 |
---|---|---|
committer | Yash Tibrewal <yashkt@google.com> | 2018-04-05 19:39:10 -0700 |
commit | 0c4c9d78b539ae7fcbfce2b4372811bb6b4a19d8 (patch) | |
tree | 860ba1ab7de6fa3ccd9d9fe2de78167a68f8db90 /src/core/lib/iomgr/ev_poll_posix.cc | |
parent | 0b49467404b997c591ce64a476c6ecfdee085316 (diff) |
poll-cv fix for zero timeout
Diffstat (limited to 'src/core/lib/iomgr/ev_poll_posix.cc')
-rw-r--r-- | src/core/lib/iomgr/ev_poll_posix.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/lib/iomgr/ev_poll_posix.cc b/src/core/lib/iomgr/ev_poll_posix.cc index 2e375b4022..d9aba9b6a3 100644 --- a/src/core/lib/iomgr/ev_poll_posix.cc +++ b/src/core/lib/iomgr/ev_poll_posix.cc @@ -1530,6 +1530,12 @@ static void run_poll(void* args) { // This function overrides poll() to handle condition variable wakeup fds static int cvfd_poll(struct pollfd* fds, nfds_t nfds, int timeout) { + if (timeout == 0) { + // Don't bother using background threads for polling if timeout is 0, + // poll-cv might not wait for a poll to return otherwise. + // https://github.com/grpc/grpc/issues/13298 + return poll(fds, nfds, 0); + } unsigned int i; int res, idx; grpc_cv_node* pollcv; |