diff options
author | Nicolas Noble <nicolasnoble@users.noreply.github.com> | 2015-09-16 17:05:42 -0700 |
---|---|---|
committer | Nicolas Noble <nicolasnoble@users.noreply.github.com> | 2015-09-16 17:05:42 -0700 |
commit | 1f351c9e1c827b94a87d760e7e5399029738ec98 (patch) | |
tree | 49d763deabfd2fd8c2badd8f868c238125df2037 | |
parent | 64b357ce8ffac125c21981dfdb795502562a263a (diff) | |
parent | 7a514915a38c33a536777a5e851d037ed6dd4f74 (diff) |
Merge pull request #3356 from ctiller/fixit
Move in-flight callback check up
-rw-r--r-- | src/core/iomgr/pollset_posix.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index dec2f5490f..f3e424e83c 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -187,6 +187,12 @@ void grpc_pollset_work(grpc_pollset *pollset, grpc_pollset_worker *worker, if (pollset->shutting_down) { goto done; } + if (pollset->in_flight_cbs) { + /* Give do_promote priority so we don't starve it out */ + gpr_mu_unlock(&pollset->mu); + gpr_mu_lock(&pollset->mu); + goto done; + } if (!pollset->kicked_without_pollers) { push_front_worker(pollset, worker); added_worker = 1; @@ -422,12 +428,6 @@ static void basic_pollset_maybe_work(grpc_pollset *pollset, int r; nfds_t nfds; - if (pollset->in_flight_cbs) { - /* Give do_promote priority so we don't starve it out */ - gpr_mu_unlock(&pollset->mu); - gpr_mu_lock(&pollset->mu); - return; - } fd = pollset->data.ptr; if (fd && grpc_fd_is_orphaned(fd)) { GRPC_FD_UNREF(fd, "basicpoll"); |