diff --git a/src/core/ext/client_channel/client_channel.c b/src/core/ext/client_channel/client_channel.c index 7eb6c4a1ce9..229bf570fcd 100644 --- a/src/core/ext/client_channel/client_channel.c +++ b/src/core/ext/client_channel/client_channel.c @@ -654,6 +654,9 @@ typedef struct client_channel_call_data { grpc_linked_mdelem lb_token_mdelem; } call_data; +static void apply_final_configuration_locked(grpc_exec_ctx *exec_ctx, + grpc_call_element *elem); + grpc_subchannel_call *grpc_client_channel_get_subchannel_call( grpc_call_element *call_elem) { grpc_subchannel_call *scc = GET_CALL((call_data *)call_elem->call_data); @@ -704,45 +707,6 @@ static void retry_waiting_locked(grpc_exec_ctx *exec_ctx, call_data *calld) { gpr_free(ops); } -static void apply_final_configuration_locked(grpc_exec_ctx *exec_ctx, - grpc_call_element *elem) { - /* apply service-config level configuration to the call (now that we're - * certain it exists) */ - channel_data *chand = elem->channel_data; - call_data *calld = elem->call_data; - /* Get the method config table from channel data. */ - grpc_slice_hash_table *method_params_table = NULL; - if (chand->method_params_table != NULL) { - method_params_table = grpc_slice_hash_table_ref(chand->method_params_table); - } - /* If the method config table was present, use it. */ - if (method_params_table != NULL) { - const method_parameters *method_params = grpc_method_config_table_get( - exec_ctx, method_params_table, calld->path); - if (method_params != NULL) { - const bool have_method_timeout = - gpr_time_cmp(method_params->timeout, gpr_time_0(GPR_TIMESPAN)) != 0; - if (have_method_timeout || - method_params->wait_for_ready != WAIT_FOR_READY_UNSET) { - if (have_method_timeout) { - const gpr_timespec per_method_deadline = - gpr_time_add(calld->call_start_time, method_params->timeout); - if (gpr_time_cmp(per_method_deadline, calld->deadline) < 0) { - calld->deadline = per_method_deadline; - } - } - if (method_params->wait_for_ready != WAIT_FOR_READY_UNSET) { - calld->wait_for_ready_from_service_config = - method_params->wait_for_ready; - } - } - } - grpc_slice_hash_table_unref(exec_ctx, method_params_table); - } - /* Start deadline timer. */ - grpc_deadline_state_reset(exec_ctx, elem, calld->deadline); -} - static void subchannel_ready_locked(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { grpc_call_element *elem = arg; @@ -1079,6 +1043,45 @@ static void cc_start_transport_stream_op(grpc_exec_ctx *exec_ctx, GPR_TIMER_END("cc_start_transport_stream_op", 0); } +static void apply_final_configuration_locked(grpc_exec_ctx *exec_ctx, + grpc_call_element *elem) { + /* apply service-config level configuration to the call (now that we're + * certain it exists) */ + channel_data *chand = elem->channel_data; + call_data *calld = elem->call_data; + /* Get the method config table from channel data. */ + grpc_slice_hash_table *method_params_table = NULL; + if (chand->method_params_table != NULL) { + method_params_table = grpc_slice_hash_table_ref(chand->method_params_table); + } + /* If the method config table was present, use it. */ + if (method_params_table != NULL) { + const method_parameters *method_params = grpc_method_config_table_get( + exec_ctx, method_params_table, calld->path); + if (method_params != NULL) { + const bool have_method_timeout = + gpr_time_cmp(method_params->timeout, gpr_time_0(GPR_TIMESPAN)) != 0; + if (have_method_timeout || + method_params->wait_for_ready != WAIT_FOR_READY_UNSET) { + if (have_method_timeout) { + const gpr_timespec per_method_deadline = + gpr_time_add(calld->call_start_time, method_params->timeout); + if (gpr_time_cmp(per_method_deadline, calld->deadline) < 0) { + calld->deadline = per_method_deadline; + } + } + if (method_params->wait_for_ready != WAIT_FOR_READY_UNSET) { + calld->wait_for_ready_from_service_config = + method_params->wait_for_ready; + } + } + } + grpc_slice_hash_table_unref(exec_ctx, method_params_table); + } + /* Start deadline timer. */ + grpc_deadline_state_reset(exec_ctx, elem, calld->deadline); +} + /* Constructor for call_data */ static grpc_error *cc_init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,