aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Ponomarev <stokito@gmail.com>2020-08-09 01:23:32 +0300
committerDenys Vlasenko <vda.linux@googlemail.com>2020-08-15 23:04:49 +0200
commit68f75bb9cecbed3a1bed29219de77373fcba7a88 (patch)
tree8671ff74735d31440acfc8260a994e23635d92c4
parentb414cdf5b4a3950ac09b630d0d8b7d2844a7cf81 (diff)
downloadbusybox-w32-68f75bb9cecbed3a1bed29219de77373fcba7a88.tar.gz
busybox-w32-68f75bb9cecbed3a1bed29219de77373fcba7a88.tar.bz2
busybox-w32-68f75bb9cecbed3a1bed29219de77373fcba7a88.zip
httpd: Don't add Date header to response
RFC 2616 sec. 14.18 says that server MUST send Date header. But in fact the header make sense only for Cache-Control and can be omitted. In the same time the Date eats power, CPU and network resources which are critical for embedded systems. Signed-off-by: Sergey Ponomarev <stokito@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/httpd.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/networking/httpd.c b/networking/httpd.c
index 9141442c8..a1f841aa8 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -214,6 +214,14 @@
214//config: help 214//config: help
215//config: Makes httpd send files using GZIP content encoding if the 215//config: Makes httpd send files using GZIP content encoding if the
216//config: client supports it and a pre-compressed <file>.gz exists. 216//config: client supports it and a pre-compressed <file>.gz exists.
217//config:
218//config:config FEATURE_HTTPD_DATE
219//config: bool "Add Date header to response"
220//config: default y
221//config: depends on HTTPD
222//config: help
223//config: RFC2616 says that server MUST add Date header to response.
224//config: But it is almost useless and can be omitted.
217 225
218//applet:IF_HTTPD(APPLET(httpd, BB_DIR_USR_SBIN, BB_SUID_DROP)) 226//applet:IF_HTTPD(APPLET(httpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
219 227
@@ -1071,14 +1079,20 @@ static void send_headers(unsigned responseNum)
1071 * always fit into those kbytes. 1079 * always fit into those kbytes.
1072 */ 1080 */
1073 1081
1082#if ENABLE_FEATURE_HTTPD_DATE
1074 strftime(date_str, sizeof(date_str), RFC1123FMT, gmtime_r(&timer, &tm)); 1083 strftime(date_str, sizeof(date_str), RFC1123FMT, gmtime_r(&timer, &tm));
1075 /* ^^^ using gmtime_r() instead of gmtime() to not use static data */ 1084 /* ^^^ using gmtime_r() instead of gmtime() to not use static data */
1085#endif
1076 len = sprintf(iobuf, 1086 len = sprintf(iobuf,
1077 "HTTP/1.1 %u %s\r\n" 1087 "HTTP/1.1 %u %s\r\n"
1088#if ENABLE_FEATURE_HTTPD_DATE
1078 "Date: %s\r\n" 1089 "Date: %s\r\n"
1090#endif
1079 "Connection: close\r\n", 1091 "Connection: close\r\n",
1080 responseNum, responseString, 1092 responseNum, responseString
1081 date_str 1093#if ENABLE_FEATURE_HTTPD_DATE
1094 ,date_str
1095#endif
1082 ); 1096 );
1083 1097
1084 if (responseNum != HTTP_OK || found_mime_type) { 1098 if (responseNum != HTTP_OK || found_mime_type) {