|  | @@ -1710,6 +1710,7 @@ static int iscsi_vredirect ( struct iscsi_session *iscsi, int type,
 | 
		
	
		
			
			| 1710 | 1710 |  			     va_list args ) {
 | 
		
	
		
			
			| 1711 | 1711 |  	va_list tmp;
 | 
		
	
		
			
			| 1712 | 1712 |  	struct sockaddr *peer;
 | 
		
	
		
			
			|  | 1713 | +	int rc;
 | 
		
	
		
			
			| 1713 | 1714 |  
 | 
		
	
		
			
			| 1714 | 1715 |  	/* Intercept redirects to a LOCATION_SOCKET and record the IP
 | 
		
	
		
			
			| 1715 | 1716 |  	 * address for the iBFT.  This is a bit of a hack, but avoids
 | 
		
	
	
		
			
			|  | @@ -1725,7 +1726,15 @@ static int iscsi_vredirect ( struct iscsi_session *iscsi, int type,
 | 
		
	
		
			
			| 1725 | 1726 |  		va_end ( tmp );
 | 
		
	
		
			
			| 1726 | 1727 |  	}
 | 
		
	
		
			
			| 1727 | 1728 |  
 | 
		
	
		
			
			| 1728 |  | -	return xfer_vreopen ( &iscsi->socket, type, args );
 | 
		
	
		
			
			|  | 1729 | +	/* Redirect to new location */
 | 
		
	
		
			
			|  | 1730 | +	if ( ( rc = xfer_vreopen ( &iscsi->socket, type, args ) ) != 0 )
 | 
		
	
		
			
			|  | 1731 | +		goto err;
 | 
		
	
		
			
			|  | 1732 | +
 | 
		
	
		
			
			|  | 1733 | +	return 0;
 | 
		
	
		
			
			|  | 1734 | +
 | 
		
	
		
			
			|  | 1735 | + err:
 | 
		
	
		
			
			|  | 1736 | +	iscsi_close ( iscsi, rc );
 | 
		
	
		
			
			|  | 1737 | +	return rc;
 | 
		
	
		
			
			| 1729 | 1738 |  }
 | 
		
	
		
			
			| 1730 | 1739 |  
 | 
		
	
		
			
			| 1731 | 1740 |  /** iSCSI socket interface operations */
 |