|
|
|
@ -683,9 +683,15 @@ static void subchannel_ready(grpc_exec_ctx *exec_ctx, void *arg, |
|
|
|
|
"Failed to create subchannel", &error, 1)); |
|
|
|
|
} else if (GET_CALL(calld) == CANCELLED_CALL) { |
|
|
|
|
/* already cancelled before subchannel became ready */ |
|
|
|
|
fail_locked(exec_ctx, calld, |
|
|
|
|
GRPC_ERROR_CREATE_REFERENCING( |
|
|
|
|
"Cancelled before creating subchannel", &error, 1)); |
|
|
|
|
grpc_error *cancellation_error = GRPC_ERROR_CREATE_REFERENCING( |
|
|
|
|
"Cancelled before creating subchannel", &error, 1); |
|
|
|
|
/* if due to deadline, attach the deadline exceeded status to the error */ |
|
|
|
|
if (gpr_time_cmp(calld->deadline, gpr_now(GPR_CLOCK_MONOTONIC)) < 0) { |
|
|
|
|
cancellation_error = |
|
|
|
|
grpc_error_set_int(cancellation_error, GRPC_ERROR_INT_GRPC_STATUS, |
|
|
|
|
GRPC_STATUS_DEADLINE_EXCEEDED); |
|
|
|
|
} |
|
|
|
|
fail_locked(exec_ctx, calld, cancellation_error); |
|
|
|
|
} else { |
|
|
|
|
/* Create call on subchannel. */ |
|
|
|
|
grpc_subchannel_call *subchannel_call = NULL; |
|
|
|
@ -809,7 +815,6 @@ static bool pick_subchannel(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, |
|
|
|
|
initial_metadata_flags &= ~GRPC_INITIAL_METADATA_WAIT_FOR_READY; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// TODO(dgq): make this deadline configurable somehow.
|
|
|
|
|
const grpc_lb_policy_pick_args inputs = { |
|
|
|
|
initial_metadata, initial_metadata_flags, &calld->lb_token_mdelem, |
|
|
|
|
gpr_inf_future(GPR_CLOCK_MONOTONIC)}; |
|
|
|
|