450-httpd_accept_header.patch 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. --- a/networking/httpd.c
  2. +++ b/networking/httpd.c
  3. @@ -255,6 +255,8 @@ struct globals {
  4. USE_FEATURE_HTTPD_BASIC_AUTH(char *remoteuser;)
  5. USE_FEATURE_HTTPD_CGI(char *referer;)
  6. USE_FEATURE_HTTPD_CGI(char *user_agent;)
  7. + USE_FEATURE_HTTPD_CGI(char *http_accept;)
  8. + USE_FEATURE_HTTPD_CGI(char *http_accept_language;)
  9. off_t file_size; /* -1 - unknown */
  10. #if ENABLE_FEATURE_HTTPD_RANGES
  11. @@ -302,6 +304,8 @@ struct globals {
  12. #define remoteuser (G.remoteuser )
  13. #define referer (G.referer )
  14. #define user_agent (G.user_agent )
  15. +#define http_accept (G.http_accept )
  16. +#define http_accept_language (G.http_accept_language)
  17. #define file_size (G.file_size )
  18. #if ENABLE_FEATURE_HTTPD_RANGES
  19. #define range_start (G.range_start )
  20. @@ -1383,6 +1387,10 @@ static void send_cgi_and_exit(
  21. }
  22. }
  23. setenv1("HTTP_USER_AGENT", user_agent);
  24. + if (http_accept)
  25. + setenv1("HTTP_ACCEPT", http_accept);
  26. + if (http_accept_language)
  27. + setenv1("HTTP_ACCEPT_LANGUAGE", http_accept_language);
  28. if (post_len)
  29. putenv(xasprintf("CONTENT_LENGTH=%d", post_len));
  30. if (cookie)
  31. @@ -2020,6 +2028,10 @@ static void handle_incoming_and_exit(con
  32. referer = xstrdup(skip_whitespace(iobuf + sizeof("Referer:")-1));
  33. } else if (STRNCASECMP(iobuf, "User-Agent:") == 0) {
  34. user_agent = xstrdup(skip_whitespace(iobuf + sizeof("User-Agent:")-1));
  35. + } else if (STRNCASECMP(iobuf, "Accept:") == 0) {
  36. + http_accept = xstrdup(skip_whitespace(iobuf + sizeof("Accept:")-1));
  37. + } else if (STRNCASECMP(iobuf, "Accept-Language:") == 0) {
  38. + http_accept_language = xstrdup(skip_whitespace(iobuf + sizeof("Accept-Language:")-1));
  39. }
  40. #endif
  41. #if ENABLE_FEATURE_HTTPD_BASIC_AUTH