|  | @@ -119,7 +119,7 @@ static void set_channel_connectivity_state_locked(grpc_exec_ctx *exec_ctx,
 | 
	
		
			
				|  |  |                                                    grpc_connectivity_state state,
 | 
	
		
			
				|  |  |                                                    const char *reason) {
 | 
	
		
			
				|  |  |    if ((state == GRPC_CHANNEL_TRANSIENT_FAILURE ||
 | 
	
		
			
				|  |  | -       state == GRPC_CHANNEL_FATAL_FAILURE) &&
 | 
	
		
			
				|  |  | +       state == GRPC_CHANNEL_SHUTDOWN) &&
 | 
	
		
			
				|  |  |        chand->lb_policy != NULL) {
 | 
	
		
			
				|  |  |      /* cancel fail-fast picks */
 | 
	
		
			
				|  |  |      grpc_lb_policy_cancel_picks(
 | 
	
	
		
			
				|  | @@ -136,8 +136,7 @@ static void on_lb_policy_state_changed_locked(
 | 
	
		
			
				|  |  |    /* check if the notification is for a stale policy */
 | 
	
		
			
				|  |  |    if (w->lb_policy != w->chand->lb_policy) return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if (publish_state == GRPC_CHANNEL_FATAL_FAILURE &&
 | 
	
		
			
				|  |  | -      w->chand->resolver != NULL) {
 | 
	
		
			
				|  |  | +  if (publish_state == GRPC_CHANNEL_SHUTDOWN && w->chand->resolver != NULL) {
 | 
	
		
			
				|  |  |      publish_state = GRPC_CHANNEL_TRANSIENT_FAILURE;
 | 
	
		
			
				|  |  |      grpc_resolver_channel_saw_error(exec_ctx, w->chand->resolver);
 | 
	
		
			
				|  |  |      GRPC_LB_POLICY_UNREF(exec_ctx, w->chand->lb_policy, "channel");
 | 
	
	
		
			
				|  | @@ -145,7 +144,7 @@ static void on_lb_policy_state_changed_locked(
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    set_channel_connectivity_state_locked(exec_ctx, w->chand, publish_state,
 | 
	
		
			
				|  |  |                                          "lb_changed");
 | 
	
		
			
				|  |  | -  if (w->state != GRPC_CHANNEL_FATAL_FAILURE) {
 | 
	
		
			
				|  |  | +  if (w->state != GRPC_CHANNEL_SHUTDOWN) {
 | 
	
		
			
				|  |  |      watch_lb_policy(exec_ctx, w->chand, w->lb_policy, w->state);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -237,7 +236,7 @@ static void cc_on_config_changed(grpc_exec_ctx *exec_ctx, void *arg,
 | 
	
		
			
				|  |  |        chand->resolver = NULL;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      set_channel_connectivity_state_locked(
 | 
	
		
			
				|  |  | -        exec_ctx, chand, GRPC_CHANNEL_FATAL_FAILURE, "resolver_gone");
 | 
	
		
			
				|  |  | +        exec_ctx, chand, GRPC_CHANNEL_SHUTDOWN, "resolver_gone");
 | 
	
		
			
				|  |  |      gpr_mu_unlock(&chand->mu_config);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -292,8 +291,8 @@ static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (op->disconnect && chand->resolver != NULL) {
 | 
	
		
			
				|  |  | -    set_channel_connectivity_state_locked(
 | 
	
		
			
				|  |  | -        exec_ctx, chand, GRPC_CHANNEL_FATAL_FAILURE, "disconnect");
 | 
	
		
			
				|  |  | +    set_channel_connectivity_state_locked(exec_ctx, chand,
 | 
	
		
			
				|  |  | +                                          GRPC_CHANNEL_SHUTDOWN, "disconnect");
 | 
	
		
			
				|  |  |      grpc_resolver_shutdown(exec_ctx, chand->resolver);
 | 
	
		
			
				|  |  |      GRPC_RESOLVER_UNREF(exec_ctx, chand->resolver, "channel");
 | 
	
		
			
				|  |  |      chand->resolver = NULL;
 |