diff options
author | Craig Tiller <ctiller@google.com> | 2015-07-16 16:19:14 -0700 |
---|---|---|
committer | Craig Tiller <ctiller@google.com> | 2015-07-16 16:19:14 -0700 |
commit | 1ada6ad8e57e9033f9cc9a6b0082e27a413e9584 (patch) | |
tree | 282cbc4f22d5e25edf155654b9734501845f1ebf /src/core/iomgr/pollset_set_posix.c | |
parent | 48cb07c9096250374d8d9288452195cd9b90ce16 (diff) |
Added connectivity tests, fixed bugs
Diffstat (limited to 'src/core/iomgr/pollset_set_posix.c')
-rw-r--r-- | src/core/iomgr/pollset_set_posix.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/core/iomgr/pollset_set_posix.c b/src/core/iomgr/pollset_set_posix.c index 5ff7df1dcd..2076ac70ef 100644 --- a/src/core/iomgr/pollset_set_posix.c +++ b/src/core/iomgr/pollset_set_posix.c @@ -60,7 +60,7 @@ void grpc_pollset_set_destroy(grpc_pollset_set *pollset_set) { void grpc_pollset_set_add_pollset(grpc_pollset_set *pollset_set, grpc_pollset *pollset) { - size_t i; + size_t i, j; gpr_mu_lock(&pollset_set->mu); if (pollset_set->pollset_count == pollset_set->pollset_capacity) { pollset_set->pollset_capacity = @@ -70,9 +70,15 @@ void grpc_pollset_set_add_pollset(grpc_pollset_set *pollset_set, sizeof(*pollset_set->pollsets)); } pollset_set->pollsets[pollset_set->pollset_count++] = pollset; - for (i = 0; i < pollset_set->fd_count; i++) { - grpc_pollset_add_fd(pollset, pollset_set->fds[i]); + for (i = 0, j = 0; i < pollset_set->fd_count; i++) { + if (grpc_fd_is_orphaned(pollset_set->fds[i])) { + GRPC_FD_UNREF(pollset_set->fds[i], "pollset"); + } else { + grpc_pollset_add_fd(pollset, pollset_set->fds[i]); + pollset_set->fds[j++] = pollset_set->fds[i]; + } } + pollset_set->fd_count = j; gpr_mu_unlock(&pollset_set->mu); } |