aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/iomgr/pollset_posix.c3
-rw-r--r--src/core/surface/channel.c4
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;
+}