|
|
|
@ -481,7 +481,10 @@ void grpc_call_destroy(grpc_call *c) { |
|
|
|
|
c->destroy_called = 1; |
|
|
|
|
cancel = !c->received_final_op; |
|
|
|
|
gpr_mu_unlock(&c->mu); |
|
|
|
|
if (cancel) grpc_call_cancel(c, NULL); |
|
|
|
|
if (cancel) { |
|
|
|
|
cancel_with_error(&exec_ctx, c, STATUS_FROM_API_OVERRIDE, |
|
|
|
|
GRPC_ERROR_CANCELLED); |
|
|
|
|
} |
|
|
|
|
GRPC_CALL_INTERNAL_UNREF(&exec_ctx, c, "destroy"); |
|
|
|
|
grpc_exec_ctx_finish(&exec_ctx); |
|
|
|
|
GPR_TIMER_END("grpc_call_destroy", 0); |
|
|
|
@ -490,8 +493,11 @@ void grpc_call_destroy(grpc_call *c) { |
|
|
|
|
grpc_call_error grpc_call_cancel(grpc_call *call, void *reserved) { |
|
|
|
|
GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved)); |
|
|
|
|
GPR_ASSERT(!reserved); |
|
|
|
|
return grpc_call_cancel_with_status(call, GRPC_STATUS_CANCELLED, "Cancelled", |
|
|
|
|
NULL); |
|
|
|
|
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; |
|
|
|
|
cancel_with_error(&exec_ctx, call, STATUS_FROM_API_OVERRIDE, |
|
|
|
|
GRPC_ERROR_CANCELLED); |
|
|
|
|
grpc_exec_ctx_finish(&exec_ctx); |
|
|
|
|
return GRPC_CALL_OK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void execute_op(grpc_exec_ctx *exec_ctx, grpc_call *call, |
|
|
|
|