httpd: set $HOST to Host: header value. +83 bytes.
authorDenis Vlasenko <vda.linux@googlemail.com>
Sat, 22 Nov 2008 20:29:35 +0000 (20:29 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sat, 22 Nov 2008 20:29:35 +0000 (20:29 -0000)
by Tobias Poschwatta (tp AT fonz.de)

networking/httpd.c

index db8eb1e9c7898000166e4b2bf57c32b08c756643..3a2e6b14bb41bcb9ac27c1f5b68775bd3f173de3 100644 (file)
@@ -254,6 +254,7 @@ struct globals {
        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 *host;)
        USE_FEATURE_HTTPD_CGI(char *http_accept;)
        USE_FEATURE_HTTPD_CGI(char *http_accept_language;)
 
@@ -301,6 +302,7 @@ struct globals {
 #define remoteuser        (G.remoteuser       )
 #define referer           (G.referer          )
 #define user_agent        (G.user_agent       )
+#define host              (G.host             )
 #define http_accept       (G.http_accept      )
 #define http_accept_language (G.http_accept_language)
 #define file_size         (G.file_size        )
@@ -1406,6 +1408,7 @@ static void send_cgi_and_exit(
 #endif
        if (referer)
                setenv1("HTTP_REFERER", referer);
+       setenv1("HTTP_HOST", host); /* set to "" if NULL */
 
        xpiped_pair(fromCgi);
        xpiped_pair(toCgi);
@@ -2013,6 +2016,8 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
                                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, "Host:") == 0) {
+                               host = xstrdup(skip_whitespace(iobuf + sizeof("Host:")-1));
                        } else if (STRNCASECMP(iobuf, "Accept:") == 0) {
                                http_accept = xstrdup(skip_whitespace(iobuf + sizeof("Accept:")-1));
                        } else if (STRNCASECMP(iobuf, "Accept-Language:") == 0) {