BusyBox httpd Accept Header Patch
authorFelix Fietkau <nbd@openwrt.org>
Tue, 2 Sep 2008 11:16:43 +0000 (11:16 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 2 Sep 2008 11:16:43 +0000 (11:16 +0000)
With this patch the BusyBox httpd pass the "Accept:" and
"Accept-Language:" header by the environment variables to the
CGI-Script, so this can make Content Negotiation to deliver the page in
the language, which was selected by the user in the browser settings,
and/or serve the XHTML page with the right MIME-Type
application/xhtml+xml to user agents which support it und text/html
which don't.

Signed-off-by: Alina Friedrichsen <x-alina@gmx.net>
SVN-Revision: 12496

package/busybox/patches/450-httpd_accept_header.patch [new file with mode: 0644]

diff --git a/package/busybox/patches/450-httpd_accept_header.patch b/package/busybox/patches/450-httpd_accept_header.patch
new file mode 100644 (file)
index 0000000..ac39206
--- /dev/null
@@ -0,0 +1,42 @@
+--- a/networking/httpd.c
++++ b/networking/httpd.c
+@@ -255,6 +255,8 @@
+       USE_FEATURE_HTTPD_BASIC_AUTH(char *remoteuser;)
+       USE_FEATURE_HTTPD_CGI(char *referer;)
+       USE_FEATURE_HTTPD_CGI(char *user_agent;)
++      USE_FEATURE_HTTPD_CGI(char *http_accept;)
++      USE_FEATURE_HTTPD_CGI(char *http_accept_language;)
+       off_t file_size;        /* -1 - unknown */
+ #if ENABLE_FEATURE_HTTPD_RANGES
+@@ -302,6 +304,8 @@
+ #define remoteuser        (G.remoteuser       )
+ #define referer           (G.referer          )
+ #define user_agent        (G.user_agent       )
++#define http_accept       (G.http_accept      )
++#define http_accept_language (G.http_accept_language)
+ #define file_size         (G.file_size        )
+ #if ENABLE_FEATURE_HTTPD_RANGES
+ #define range_start       (G.range_start      )
+@@ -1383,6 +1387,10 @@
+               }
+       }
+       setenv1("HTTP_USER_AGENT", user_agent);
++      if (http_accept)
++              setenv1("HTTP_ACCEPT", http_accept);
++      if (http_accept_language)
++              setenv1("HTTP_ACCEPT_LANGUAGE", http_accept_language);
+       if (post_len)
+               putenv(xasprintf("CONTENT_LENGTH=%d", post_len));
+       if (cookie)
+@@ -2009,6 +2017,10 @@
+                               referer = xstrdup(skip_whitespace(iobuf + sizeof("Referer:")-1));
+                       } else if (STRNCASECMP(iobuf, "User-Agent:") == 0) {
+                               user_agent = xstrdup(skip_whitespace(iobuf + sizeof("User-Agent:")-1));
++                      } else if (STRNCASECMP(iobuf, "Accept:") == 0) {
++                              http_accept = xstrdup(skip_whitespace(iobuf + sizeof("Accept:")-1));
++                      } else if (STRNCASECMP(iobuf, "Accept-Language:") == 0) {
++                              http_accept_language = xstrdup(skip_whitespace(iobuf + sizeof("Accept-Language:")-1));
+                       }
+ #endif
+ #if ENABLE_FEATURE_HTTPD_BASIC_AUTH