| 
					
				 | 
			
			
				@@ -202,11 +202,6 @@ struct inproc_stream { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     t->unref(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (closure_at_destroy) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure_at_destroy, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              GRPC_ERROR_NONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifndef NDEBUG 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -249,7 +244,6 @@ struct inproc_stream { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   bool other_side_closed = false;               // won't talk anymore 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   bool write_buffer_other_side_closed = false;  // on hold 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   grpc_stream_refcount* refs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  grpc_closure* closure_at_destroy = nullptr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   grpc_core::Arena* arena; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1183,12 +1177,17 @@ void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   gpr_mu_unlock(&t->mu->mu); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void destroy_stream(grpc_transport* /*gt*/, grpc_stream* gs, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void destroy_stream(grpc_transport* gt, grpc_stream* gs, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     grpc_closure* then_schedule_closure) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   INPROC_LOG(GPR_INFO, "destroy_stream %p %p", gs, then_schedule_closure); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  inproc_transport* t = reinterpret_cast<inproc_transport*>(gt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   inproc_stream* s = reinterpret_cast<inproc_stream*>(gs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  s->closure_at_destroy = then_schedule_closure; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  gpr_mu_lock(&t->mu->mu); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  close_stream_locked(s); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  gpr_mu_unlock(&t->mu->mu); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   s->~inproc_stream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  grpc_core::ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          GRPC_ERROR_NONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void destroy_transport(grpc_transport* gt) { 
			 |