aboutsummaryrefslogtreecommitdiffstats
path: root/src/net
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2008-03-31 05:01:08 -0700
committerH. Peter Anvin <hpa@zytor.com>2008-03-31 05:01:08 -0700
commitb107637008d15e00a4d95cdb5c8f5c11fda490f7 (patch)
tree687226894f865910866854bd3dfd3a88152e287d /src/net
parentfeade5da6e0fd233b845d40c7a0a696ad1e35cc4 (diff)
downloadipxe-b107637008d15e00a4d95cdb5c8f5c11fda490f7.tar.gz
[http] gPXE is a HTTP/1.0 client, not a HTTP/1.1 client
gPXE is not compliant with the HTTP/1.1 specification (RFC 2616), since it lacks support for "Transfer-Encoding: chunked". gPXE is, however, compliant with the HTTP/1.0 specification (RFC 1945), which does not require "Transfer-Encoding: chunked" to be supported. The only HTTP/1.1 feature that gPXE uses is the "Host:" header, but servers universally accept that one from HTTP/1.0 clients as an optional extension (it is obligatory for HTTP/1.1). gPXE does not, for example, appear to support connection caching. Advertising as a HTTP/1.0 client will typically make the server close the connection immediately upon sending the last data, which is actually beneficial if we aren't going to keep the connection alive anyway.
Diffstat (limited to 'src/net')
-rw-r--r--src/net/tcp/http.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/net/tcp/http.c b/src/net/tcp/http.c
index db92e9eb..4dc1ab73 100644
--- a/src/net/tcp/http.c
+++ b/src/net/tcp/http.c
@@ -393,7 +393,7 @@ static void http_step ( struct process *process ) {
if ( xfer_window ( &http->socket ) ) {
process_del ( &http->process );
if ( ( rc = xfer_printf ( &http->socket,
- "GET %s%s%s HTTP/1.1\r\n"
+ "GET %s%s%s HTTP/1.0\r\n"
"User-Agent: gPXE/" VERSION "\r\n"
"Host: %s\r\n"
"\r\n",