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 <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2021-12-17 21:01:15 +01:00
parent 70683faf38
commit b720629dfe

View File

@ -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,10 +1240,15 @@ 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":
* "data is compressed for transfer", not "data is an archive".
@ -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();
}