|  | @@ -101,6 +101,7 @@ static grpc_fd *alloc_fd(int fd) {
 | 
	
		
			
				|  |  |    r->read_watcher = r->write_watcher = NULL;
 | 
	
		
			
				|  |  |    r->on_done_closure = NULL;
 | 
	
		
			
				|  |  |    r->closed = 0;
 | 
	
		
			
				|  |  | +  r->released = 0;
 | 
	
		
			
				|  |  |    return r;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -210,6 +211,14 @@ static int has_watchers(grpc_fd *fd) {
 | 
	
		
			
				|  |  |           fd->inactive_watcher_root.next != &fd->inactive_watcher_root;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +int grpc_fd_wrapped_fd(grpc_fd *fd) {
 | 
	
		
			
				|  |  | +  if (fd->released || fd->closed) {
 | 
	
		
			
				|  |  | +    return -1;
 | 
	
		
			
				|  |  | +  } else {
 | 
	
		
			
				|  |  | +    return fd->fd;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  void grpc_fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_closure *on_done,
 | 
	
		
			
				|  |  |                      int *release_fd, const char *reason) {
 | 
	
		
			
				|  |  |    fd->on_done_closure = on_done;
 |