From: Malte Starostik Date: Fri, 15 Jul 2011 14:31:56 +0000 (+0200) Subject: [http] Include port in HTTP Host header as needed X-Git-Tag: v1.20.1~2088 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=69b7d57265679d76e26581d034e8f8ab5168bb27;p=thirdparty%2Fipxe.git [http] Include port in HTTP Host header as needed According to section 14.23 of RFC2616, an HTTP Host header without port implies the default port is used. Thus, when fetching from anywhere but port 80 for HTTP or 443 for HTTPS, the port ought to be explicitly given in that header. Otherwise, some servers might fail to associate the request with the correct virtual host or generate incorrect self-referencing URLs. Signed-off-by: Michael Brown --- diff --git a/src/net/tcp/http.c b/src/net/tcp/http.c index 012b22683..cee751335 100644 --- a/src/net/tcp/http.c +++ b/src/net/tcp/http.c @@ -662,13 +662,17 @@ static void http_step ( struct http_request *http ) { if ( ( rc = xfer_printf ( &http->socket, "%s %s%s HTTP/1.1\r\n" "User-Agent: iPXE/" VERSION "\r\n" - "Host: %s\r\n" + "Host: %s%s%s\r\n" "%s%s%s%s%s%s%s" "\r\n", ( ( http->flags & HTTP_HEAD_ONLY ) ? "HEAD" : "GET" ), ( http->uri->path ? "" : "/" ), request, host, + ( http->uri->port ? + ":" : "" ), + ( http->uri->port ? + http->uri->port : "" ), ( ( http->flags & HTTP_KEEPALIVE ) ? "Connection: Keep-Alive\r\n" : "" ), ( partial ? "Range: bytes=" : "" ),