uhttpd: add "Connection: close" headers, mandatory according to HTTP/1.1 spec
authorJo-Philipp Wich <jow@openwrt.org>
Sun, 21 Mar 2010 03:46:03 +0000 (03:46 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sun, 21 Mar 2010 03:46:03 +0000 (03:46 +0000)
contrib/package/uhttpd/src/uhttpd-cgi.c
contrib/package/uhttpd/src/uhttpd-file.c
contrib/package/uhttpd/src/uhttpd-utils.c

index 4889819aa7caba2b3e550a1213528c05827239a1..5df045e8c7ddd2fd6f12e4a896ff809e7dc1a0ce 100644 (file)
@@ -430,7 +430,8 @@ void uh_cgi_request(struct client *cl, struct http_request *req, struct path_inf
                                                                {
                                                                        /* write status */
                                                                        ensure(uh_http_sendf(cl, NULL,
-                                                                               "HTTP/%.1f %03d %s\r\n",
+                                                                               "HTTP/%.1f %03d %s\r\n"
+                                                                               "Connection: close\r\n",
                                                                                req->version, res->statuscode,
                                                                                res->statusmsg));
 
index f0379bccc1b58082610ff41b683bc311e179ac71..7ce5e3978af63ee91dfa0a96331b83baa9bcff0e 100644 (file)
@@ -101,6 +101,8 @@ static char * uh_file_header_lookup(struct http_request *req, const char *name)
 
 static void uh_file_response_ok_hdrs(struct client *cl, struct http_request *req, struct stat *s)
 {
+       uh_http_sendf(cl, NULL, "Connection: close\r\n");
+
        if( s )
        {
                uh_http_sendf(cl, NULL, "ETag: %s\r\n", uh_file_mktag(s));
@@ -124,8 +126,9 @@ static void uh_file_response_304(struct client *cl, struct http_request *req, st
 
 static void uh_file_response_412(struct client *cl, struct http_request *req)
 {
-       uh_http_sendf(cl, NULL, "HTTP/%.1f 412 Precondition Failed\r\n",
-               req->version);
+       uh_http_sendf(cl, NULL,
+               "HTTP/%.1f 412 Precondition Failed\r\n"
+               "Connection: close\r\n", req->version);
 }
 
 static int uh_file_if_match(struct client *cl, struct http_request *req, struct stat *s)
index 914c6061166b31445d177da28d812a8e2fb9cc83..549ad88d0772432a88ed2697ef1b84fefe89eaaf 100644 (file)
@@ -171,6 +171,7 @@ int uh_http_sendhf(struct client *cl, int code, const char *summary, const char
 
        len = snprintf(buffer, sizeof(buffer),
                "HTTP/1.1 %03i %s\r\n"
+               "Connection: close\r\n"
                "Content-Type: text/plain\r\n"
                "Transfer-Encoding: chunked\r\n\r\n",
                        code, summary