diff options
author | Michael Brown | 2017-03-28 22:37:03 +0200 |
---|---|---|
committer | Michael Brown | 2017-03-28 22:40:52 +0200 |
commit | c8cae7cc178776dbb42cbe1cdaecbac99ddc060d (patch) | |
tree | c769b0b1760180a46194f848698cedb01f67ef2f /src/net/tcp | |
parent | [iscsi] Do not install iBFT when no iSCSI targets exist (diff) | |
download | ipxe-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/tcp')
-rw-r--r-- | src/net/tcp/httpcore.c | 3 |
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; |