|  | @@ -196,6 +196,7 @@ static void begin_call(grpc_server *server, call_data *calld,
 | 
	
		
			
				|  |  |  static void fail_call(grpc_server *server, requested_call *rc);
 | 
	
		
			
				|  |  |  static void shutdown_channel(channel_data *chand, int send_goaway,
 | 
	
		
			
				|  |  |                               int send_disconnect);
 | 
	
		
			
				|  |  | +static void maybe_finish_shutdown(grpc_server *server);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static int call_list_join(call_data **root, call_data *call, call_list list) {
 | 
	
		
			
				|  |  |    GPR_ASSERT(!call->root[list]);
 | 
	
	
		
			
				|  | @@ -315,6 +316,7 @@ static void destroy_channel(channel_data *chand) {
 | 
	
		
			
				|  |  |    GPR_ASSERT(chand->server != NULL);
 | 
	
		
			
				|  |  |    orphan_channel(chand);
 | 
	
		
			
				|  |  |    server_ref(chand->server);
 | 
	
		
			
				|  |  | +  maybe_finish_shutdown(chand->server);
 | 
	
		
			
				|  |  |    grpc_iomgr_add_callback(finish_destroy_channel, chand);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |