]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[http] Notify data transfer interface when underlying connection is ready
authorMichael Brown <mcb30@ipxe.org>
Tue, 28 Mar 2017 20:37:03 +0000 (23:37 +0300)
committerMichael Brown <mcb30@ipxe.org>
Tue, 28 Mar 2017 20:40:52 +0000 (23:40 +0300)
HTTP implements xfer_window_changed() on the underlying server
connection using http_step(), which does not propagate the window
change notification to the data transfer interface.  This breaks the
multipath-capable SAN boot code, which relies on the window change
notification to discover that the HTTP block device is ready for
commands to be issued.

Fix by sending xfer_window_changed() in http_step() once the
underlying connection has been determined to be ready.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/net/tcp/httpcore.c

index ce53a2127a0787dc7967b1c46fc7069ff7393c6a..4a1300cd7d2db454dc742f618039c6205dbdb6e9 100644 (file)
@@ -352,6 +352,9 @@ static void http_step ( struct http_transaction *http ) {
        if ( ! xfer_window ( &http->conn ) )
                return;
 
+       /* Notify data transfer interface that window may have changed */
+       xfer_window_changed ( &http->xfer );
+
        /* Do nothing until data transfer interface is ready */
        if ( ! xfer_window ( &http->xfer ) )
                return;