|  | @@ -663,9 +663,13 @@ static bool pick_subchannel(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
 | 
	
		
			
				|  |  |      // If the application explicitly set wait_for_ready, use that.
 | 
	
		
			
				|  |  |      // Otherwise, if the service config specified a value for this
 | 
	
		
			
				|  |  |      // method, use that.
 | 
	
		
			
				|  |  | -    if ((initial_metadata_flags &
 | 
	
		
			
				|  |  | -         GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET) == 0 &&
 | 
	
		
			
				|  |  | -        calld->wait_for_ready_from_service_config != WAIT_FOR_READY_UNSET) {
 | 
	
		
			
				|  |  | +    const bool wait_for_ready_set_from_api =
 | 
	
		
			
				|  |  | +        initial_metadata_flags &
 | 
	
		
			
				|  |  | +        GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET;
 | 
	
		
			
				|  |  | +    const bool wait_for_ready_set_from_service_config =
 | 
	
		
			
				|  |  | +        calld->wait_for_ready_from_service_config != WAIT_FOR_READY_UNSET;
 | 
	
		
			
				|  |  | +    if (!wait_for_ready_set_from_api &&
 | 
	
		
			
				|  |  | +        wait_for_ready_set_from_service_config) {
 | 
	
		
			
				|  |  |        if (calld->wait_for_ready_from_service_config == WAIT_FOR_READY_TRUE) {
 | 
	
		
			
				|  |  |          initial_metadata_flags |= GRPC_INITIAL_METADATA_WAIT_FOR_READY;
 | 
	
		
			
				|  |  |        } else {
 | 
	
	
		
			
				|  | @@ -676,8 +680,9 @@ static bool pick_subchannel(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
 | 
	
		
			
				|  |  |      const grpc_lb_policy_pick_args inputs = {
 | 
	
		
			
				|  |  |          calld->pollent, initial_metadata, initial_metadata_flags,
 | 
	
		
			
				|  |  |          &calld->lb_token_mdelem, gpr_inf_future(GPR_CLOCK_MONOTONIC)};
 | 
	
		
			
				|  |  | -    bool result = grpc_lb_policy_pick(exec_ctx, lb_policy, &inputs,
 | 
	
		
			
				|  |  | -                                      connected_subchannel, NULL, on_ready);
 | 
	
		
			
				|  |  | +    const bool result =
 | 
	
		
			
				|  |  | +        grpc_lb_policy_pick(exec_ctx, lb_policy, &inputs,
 | 
	
		
			
				|  |  | +                            connected_subchannel, NULL, on_ready);
 | 
	
		
			
				|  |  |      GRPC_LB_POLICY_UNREF(exec_ctx, lb_policy, "pick_subchannel");
 | 
	
		
			
				|  |  |      GPR_TIMER_END("pick_subchannel", 0);
 | 
	
		
			
				|  |  |      return result;
 | 
	
	
		
			
				|  | @@ -836,13 +841,13 @@ static void read_service_config(grpc_exec_ctx *exec_ctx, void *arg,
 | 
	
		
			
				|  |  |    gpr_mu_unlock(&chand->mu);
 | 
	
		
			
				|  |  |    // If the method config table was present, use it.
 | 
	
		
			
				|  |  |    if (method_config_table != NULL) {
 | 
	
		
			
				|  |  | -    grpc_method_config *method_config =
 | 
	
		
			
				|  |  | +    const grpc_method_config *method_config =
 | 
	
		
			
				|  |  |          grpc_method_config_table_get_method_config(method_config_table,
 | 
	
		
			
				|  |  |                                                     calld->path);
 | 
	
		
			
				|  |  |      if (method_config != NULL) {
 | 
	
		
			
				|  |  | -      gpr_timespec *per_method_timeout =
 | 
	
		
			
				|  |  | +      const gpr_timespec *per_method_timeout =
 | 
	
		
			
				|  |  |            grpc_method_config_get_timeout(method_config);
 | 
	
		
			
				|  |  | -      bool *wait_for_ready =
 | 
	
		
			
				|  |  | +      const bool *wait_for_ready =
 | 
	
		
			
				|  |  |            grpc_method_config_get_wait_for_ready(method_config);
 | 
	
		
			
				|  |  |        if (per_method_timeout != NULL || wait_for_ready != NULL) {
 | 
	
		
			
				|  |  |          gpr_mu_lock(&calld->mu);
 | 
	
	
		
			
				|  | @@ -907,14 +912,14 @@ static grpc_error *cc_init_call_elem(grpc_exec_ctx *exec_ctx,
 | 
	
		
			
				|  |  |            grpc_method_config_table_get_method_config(method_config_table,
 | 
	
		
			
				|  |  |                                                       args->path);
 | 
	
		
			
				|  |  |        if (method_config != NULL) {
 | 
	
		
			
				|  |  | -        gpr_timespec *per_method_timeout =
 | 
	
		
			
				|  |  | +        const gpr_timespec *per_method_timeout =
 | 
	
		
			
				|  |  |              grpc_method_config_get_timeout(method_config);
 | 
	
		
			
				|  |  |          if (per_method_timeout != NULL) {
 | 
	
		
			
				|  |  |            gpr_timespec per_method_deadline =
 | 
	
		
			
				|  |  |                gpr_time_add(calld->call_start_time, *per_method_timeout);
 | 
	
		
			
				|  |  |            calld->deadline = gpr_time_min(calld->deadline, per_method_deadline);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        bool *wait_for_ready =
 | 
	
		
			
				|  |  | +        const bool *wait_for_ready =
 | 
	
		
			
				|  |  |              grpc_method_config_get_wait_for_ready(method_config);
 | 
	
		
			
				|  |  |          if (wait_for_ready != NULL) {
 | 
	
		
			
				|  |  |            calld->wait_for_ready_from_service_config =
 |