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