summaryrefslogtreecommitdiffstats
path: root/src/net
diff options
context:
space:
mode:
authorMichael Brown2017-03-28 22:37:03 +0200
committerMichael Brown2017-03-28 22:40:52 +0200
commitc8cae7cc178776dbb42cbe1cdaecbac99ddc060d (patch)
treec769b0b1760180a46194f848698cedb01f67ef2f /src/net
parent[iscsi] Do not install iBFT when no iSCSI targets exist (diff)
downloadipxe-c8cae7cc178776dbb42cbe1cdaecbac99ddc060d.tar.gz
ipxe-c8cae7cc178776dbb42cbe1cdaecbac99ddc060d.tar.xz
ipxe-c8cae7cc178776dbb42cbe1cdaecbac99ddc060d.zip
[http] Notify data transfer interface when underlying connection is ready
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>
Diffstat (limited to 'src/net')
-rw-r--r--src/net/tcp/httpcore.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/net/tcp/httpcore.c b/src/net/tcp/httpcore.c
index ce53a212..4a1300cd 100644
--- a/src/net/tcp/httpcore.c
+++ b/src/net/tcp/httpcore.c
@@ -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;