From c8cae7cc178776dbb42cbe1cdaecbac99ddc060d Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 28 Mar 2017 23:37:03 +0300 Subject: [PATCH] [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 --- src/net/tcp/httpcore.c | 3 +++ 1 file changed, 3 insertions(+) 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;