david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[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>
This commit is contained in:
Michael Brown 2016-07-04 16:10:45 +01:00
parent aeb6203811
commit 5e2a7481ad
1 changed files with 5 additions and 0 deletions

View File

@ -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 );
}