mirror of
https://github.com/ipxe/ipxe
synced 2025-12-19 19:49:45 +03:00
[xfer] Always nullify interface while sending close() message
Objects typically call xfer_close() as part of their response to a close() message. If the initiating object has already nullified the xfer interface then this isn't a problem, but it can lead to unexpected behaviour when the initiating object is aiming to reuse the connection and so does not nullify the interface. Fix by always temporarily nullifying the interface during xfer_close() (as was already being done by xfer_vreopen() in order to work around this specific problem). Reported-by: infernix <infernix@infernix.net> Tested-by: infernix <infernix@infernix.net>
This commit is contained in:
@@ -188,15 +188,10 @@ int xfer_open ( struct xfer_interface *xfer, int type, ... ) {
|
||||
* method handler.
|
||||
*/
|
||||
int xfer_vreopen ( struct xfer_interface *xfer, int type, va_list args ) {
|
||||
struct xfer_interface_operations *op = xfer->op;
|
||||
|
||||
/* Close existing connection */
|
||||
xfer_nullify ( xfer );
|
||||
xfer_close ( xfer, 0 );
|
||||
|
||||
/* Restore to operational status */
|
||||
xfer->op = op;
|
||||
|
||||
/* Open new location */
|
||||
return xfer_vopen ( xfer, type, args );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user