aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/channel/client_channel.c
diff options
context:
space:
mode:
authorGravatar Craig Tiller <craig.tiller@gmail.com>2015-06-02 09:05:23 -0700
committerGravatar Craig Tiller <craig.tiller@gmail.com>2015-06-02 09:05:23 -0700
commit5dde66ecac3cdcdeb362a5e0c8da450a060367df (patch)
treec709680f3c6e36966701ba2f205419cb31bf1a97 /src/core/channel/client_channel.c
parentf93fd05a97081626dbd78c4553b6c2e78eeba920 (diff)
Handle reffing when a cancel or bind gets stuck in the waiting queue
Diffstat (limited to 'src/core/channel/client_channel.c')
-rw-r--r--src/core/channel/client_channel.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/channel/client_channel.c b/src/core/channel/client_channel.c
index 1eda23b791..31b1fc3bde 100644
--- a/src/core/channel/client_channel.c
+++ b/src/core/channel/client_channel.c
@@ -171,6 +171,9 @@ static void handle_op_after_cancellation(grpc_call_element *elem,
*op->recv_state = GRPC_STREAM_CLOSED;
op->on_done_recv(op->recv_user_data, 1);
}
+ if (op->on_consumed) {
+ op->on_consumed(op->on_consumed_user_data, 0);
+ }
}
static void cc_start_transport_op(grpc_call_element *elem,
@@ -264,6 +267,9 @@ static void cc_start_transport_op(grpc_call_element *elem,
calld->s.waiting_op.recv_user_data = op->recv_user_data;
}
gpr_mu_unlock(&chand->mu);
+ if (op->on_consumed) {
+ op->on_consumed(op->on_consumed_user_data, 0);
+ }
}
break;
case CALL_CANCELLED: