From b720629dfec0e8e991e75b751dad215af2bc657f Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 17 Dec 2021 21:01:15 +0100 Subject: [PATCH] httpd: do not send Last-Modified / ETag / Content-Length for error pages function old new delta send_headers 713 701 -12 send_headers_and_exit 20 34 +14 Signed-off-by: Denys Vlasenko --- networking/httpd.c | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/networking/httpd.c b/networking/httpd.c index 4def1b6fc..1ba1d1063 100644 --- a/networking/httpd.c +++ b/networking/httpd.c @@ -1222,29 +1222,17 @@ static void send_headers(unsigned responseNum) // (NB: standards do not define "Transfer-Length:" _header_, // transfer-length above is just a concept). -#if ENABLE_FEATURE_HTTPD_RANGES \ - || ENABLE_FEATURE_HTTPD_LAST_MODIFIED \ - || ENABLE_FEATURE_HTTPD_ETAG len += sprintf(iobuf + len, -# if ENABLE_FEATURE_HTTPD_RANGES +#if ENABLE_FEATURE_HTTPD_RANGES "Accept-Ranges: bytes\r\n" -# endif -# if ENABLE_FEATURE_HTTPD_LAST_MODIFIED - "Last-Modified: %s\r\n" -# endif -# if ENABLE_FEATURE_HTTPD_ETAG - "ETag: %s\r\n" -# endif -# if ENABLE_FEATURE_HTTPD_LAST_MODIFIED - , date_str -# endif -# if ENABLE_FEATURE_HTTPD_ETAG - , G.etag -# endif #endif - ); - if (!infoString) { - len += sprintf(iobuf + len, +#if ENABLE_FEATURE_HTTPD_LAST_MODIFIED + "Last-Modified: %s\r\n" +#endif +#if ENABLE_FEATURE_HTTPD_ETAG + "ETag: %s\r\n" +#endif + /* Because of 4.4 (5), we can forgo sending of "Content-Length" * since we close connection afterwards, but it helps clients * to e.g. estimate download times, show progress bars etc. @@ -1252,9 +1240,14 @@ static void send_headers(unsigned responseNum) * but de-facto standard is to send it (see comment below). */ "Content-Length: %"OFF_FMT"u\r\n", +#if ENABLE_FEATURE_HTTPD_LAST_MODIFIED + date_str, +#endif +#if ENABLE_FEATURE_HTTPD_ETAG + G.etag, +#endif file_size - ); - } + ); } /* This should be "Transfer-Encoding", not "Content-Encoding": @@ -1297,6 +1290,7 @@ static void send_headers_and_exit(int responseNum) NORETURN; static void send_headers_and_exit(int responseNum) { IF_FEATURE_HTTPD_GZIP(content_gzip = 0;) + file_size = -1; /* no Last-Modified:, ETag:, Content-Length: */ send_headers(responseNum); log_and_exit(); }