patches for easier mirroring, to eliminate a special copy, to make www.freebsd.org/security a full copy of security.freebsd.org and be eventually be the same. For now files are just sitting there. The symlinks are missing. Discussed on: www (repository location) Discussed with: simon (so)
		
			
				
	
	
		
			27 lines
		
	
	
	
		
			909 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
	
		
			909 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Index: sys/rpc/clnt_vc.c
 | |
| ===================================================================
 | |
| --- sys/rpc/clnt_vc.c	(revision 200583)
 | |
| +++ sys/rpc/clnt_vc.c	(working copy)
 | |
| @@ -413,6 +413,22 @@ call_again:
 | |
|  
 | |
|  	cr->cr_xid = xid;
 | |
|  	mtx_lock(&ct->ct_lock);
 | |
| +	/*
 | |
| +	 * Check to see if the other end has already started to close down
 | |
| +	 * the connection. The upcall will have set ct_error.re_status
 | |
| +	 * to RPC_CANTRECV if this is the case.
 | |
| +	 * If the other end starts to close down the connection after this
 | |
| +	 * point, it will be detected later when cr_error is checked,
 | |
| +	 * since the request is in the ct_pending queue.
 | |
| +	 */
 | |
| +	if (ct->ct_error.re_status == RPC_CANTRECV) {
 | |
| +		if (errp != &ct->ct_error) {
 | |
| +			errp->re_errno = ct->ct_error.re_errno;
 | |
| +			errp->re_status = RPC_CANTRECV;
 | |
| +		}
 | |
| +		stat = RPC_CANTRECV;
 | |
| +		goto out;
 | |
| +	}
 | |
|  	TAILQ_INSERT_TAIL(&ct->ct_pending, cr, cr_link);
 | |
|  	mtx_unlock(&ct->ct_lock);
 | |
|  
 |