|
|
|
@ -658,11 +658,18 @@ static void handshaker_client_destruct(alts_handshaker_client* c) { |
|
|
|
|
// TODO(apolcyn): we could remove this indirection and call
|
|
|
|
|
// grpc_call_unref inline if there was an internal variant of
|
|
|
|
|
// grpc_call_unref that didn't need to flush an ExecCtx.
|
|
|
|
|
grpc_core::ExecCtx::Run( |
|
|
|
|
DEBUG_LOCATION, |
|
|
|
|
GRPC_CLOSURE_CREATE(handshaker_call_unref, client->call, |
|
|
|
|
grpc_schedule_on_exec_ctx), |
|
|
|
|
GRPC_ERROR_NONE); |
|
|
|
|
if (grpc_core::ExecCtx::Get() == nullptr) { |
|
|
|
|
// Unref handshaker call if there is no exec_ctx, e.g., in the case of
|
|
|
|
|
// Envoy ALTS transport socket.
|
|
|
|
|
grpc_call_unref(client->call); |
|
|
|
|
} else { |
|
|
|
|
// Using existing exec_ctx to unref handshaker call.
|
|
|
|
|
grpc_core::ExecCtx::Run( |
|
|
|
|
DEBUG_LOCATION, |
|
|
|
|
GRPC_CLOSURE_CREATE(handshaker_call_unref, client->call, |
|
|
|
|
grpc_schedule_on_exec_ctx), |
|
|
|
|
GRPC_ERROR_NONE); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|