Properly handle cancellation during downwards propagation.
Change on 2014/12/17 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82395253
This commit is contained in:
parent
b74550655a
commit
bcd6259a95
|
|
@ -258,7 +258,6 @@ static void cancel_rpc(grpc_call_element *elem, grpc_call_op *op) {
|
|||
static void call_op(grpc_call_element *elem, grpc_call_element *from_elem,
|
||||
grpc_call_op *op) {
|
||||
call_data *calld = elem->call_data;
|
||||
grpc_call_element *child_elem;
|
||||
GPR_ASSERT(elem->filter == &grpc_client_channel_filter);
|
||||
GRPC_CALL_LOG_OP(GPR_INFO, elem, op);
|
||||
|
||||
|
|
@ -277,19 +276,21 @@ static void call_op(grpc_call_element *elem, grpc_call_element *from_elem,
|
|||
case GRPC_CANCEL_OP:
|
||||
cancel_rpc(elem, op);
|
||||
break;
|
||||
default:
|
||||
switch (op->dir) {
|
||||
case GRPC_CALL_UP:
|
||||
grpc_call_next_op(elem, op);
|
||||
break;
|
||||
case GRPC_CALL_DOWN:
|
||||
child_elem =
|
||||
grpc_child_call_get_top_element(calld->s.active.child_call);
|
||||
GPR_ASSERT(calld->state == CALL_ACTIVE);
|
||||
child_elem->filter->call_op(child_elem, elem, op);
|
||||
break;
|
||||
case GRPC_SEND_MESSAGE:
|
||||
case GRPC_SEND_FINISH:
|
||||
case GRPC_REQUEST_DATA:
|
||||
if (calld->state == CALL_ACTIVE) {
|
||||
grpc_call_element *child_elem =
|
||||
grpc_child_call_get_top_element(calld->s.active.child_call);
|
||||
child_elem->filter->call_op(child_elem, elem, op);
|
||||
} else {
|
||||
op->done_cb(op->user_data, GRPC_OP_ERROR);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
GPR_ASSERT(op->dir == GRPC_CALL_UP);
|
||||
grpc_call_next_op(elem, op);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue