diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/iomgr/pollset_posix.c | 3 | ||||
-rw-r--r-- | src/core/surface/channel.c | 4 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index ad9c862d6e..8bde41a146 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -140,6 +140,9 @@ void grpc_pollset_init(grpc_pollset *pollset) { } void grpc_pollset_add_fd(grpc_pollset *pollset, grpc_fd *fd) { + if (fd->workqueue->wakeup_read_fd != fd) { + grpc_pollset_add_fd(pollset, fd->workqueue->wakeup_read_fd); + } gpr_mu_lock(&pollset->mu); pollset->vtable->add_fd(pollset, fd, 1); /* the following (enabled only in debug) will reacquire and then release diff --git a/src/core/surface/channel.c b/src/core/surface/channel.c index bf4aee190f..4ec6aba7f4 100644 --- a/src/core/surface/channel.c +++ b/src/core/surface/channel.c @@ -370,3 +370,7 @@ grpc_mdstr *grpc_channel_get_message_string(grpc_channel *channel) { gpr_uint32 grpc_channel_get_max_message_length(grpc_channel *channel) { return channel->max_message_length; } + +grpc_workqueue *grpc_channel_get_workqueue(grpc_channel *channel) { + return channel->workqueue; +} |