mirror of https://github.com/ipxe/ipxe.git
				
				
				
			[xfer] Send intf_close() if redirection fails
A redirection failure is fatal, but provides no opportunity for the caller of xfer_[v]redirect() to report the failure since the interface will already have been disconnected. Fix by sending intf_close() from within the default xfer_vredirect() handler. Debugged-by: Robin Smidsrød <robin@smidsrod.no> Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/56/head
							parent
							
								
									aeb6203811
								
							
						
					
					
						commit
						5e2a7481ad
					
				| 
						 | 
				
			
			@ -81,12 +81,17 @@ int xfer_vredirect ( struct interface *intf, int type, va_list args ) {
 | 
			
		|||
		 * xfer_vreopen(), we create a temporary interface in
 | 
			
		||||
		 * order to be able to send xfer_window_changed() to
 | 
			
		||||
		 * the parent.
 | 
			
		||||
		 *
 | 
			
		||||
		 * If redirection fails, then send intf_close() to the
 | 
			
		||||
		 * parent interface.
 | 
			
		||||
		 */
 | 
			
		||||
		intf_plug ( &tmp, dest );
 | 
			
		||||
		rc = xfer_vreopen ( dest, type, args );
 | 
			
		||||
		if ( rc == 0 ) {
 | 
			
		||||
			xfer_window_changed ( dest );
 | 
			
		||||
			xfer_window_changed ( &tmp );
 | 
			
		||||
		} else {
 | 
			
		||||
			intf_close ( &tmp, rc );
 | 
			
		||||
		}
 | 
			
		||||
		intf_unplug ( &tmp );
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue