Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[http] Notify data transfer interface when underlying connection is r…
…eady

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>
  • Loading branch information
mcb30 committed Mar 28, 2017
1 parent 2ace519 commit c8cae7c
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/net/tcp/httpcore.c
Expand Up @@ -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;
Expand Down

0 comments on commit c8cae7c

Please sign in to comment.