From 77123ac74c6f18c1da78e699ae6372b92b30100a Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Thu, 30 Jul 2020 15:37:38 +0200 Subject: [PATCH] Move the adding of 304 headers in 304 factory. This avoid us to create a ContentResponse just to have some correct headers. --- src/server/response.cpp | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/server/response.cpp b/src/server/response.cpp index 8ee3799ee..8cf21a740 100644 --- a/src/server/response.cpp +++ b/src/server/response.cpp @@ -67,10 +67,13 @@ std::unique_ptr Response::build(const InternalServer& server) std::unique_ptr Response::build_304(const InternalServer& server, const ETag& etag) { - auto response = ContentResponse::build(server, "", ""); + auto response = Response::build(server); response->set_code(MHD_HTTP_NOT_MODIFIED); response->m_etag = etag; - return std::move(response); + if ( etag.get_option(ETag::COMPRESSED_CONTENT) ) { + response->add_header(MHD_HTTP_HEADER_VARY, "Accept-Encoding"); + } + return response; } std::unique_ptr Response::build_404(const InternalServer& server, const RequestContext& request, const std::string& bookName) @@ -258,17 +261,9 @@ ContentResponse::create_mhd_response(const RequestContext& request) MHD_Response* response = MHD_create_response_from_buffer( m_content.size(), const_cast(m_content.data()), MHD_RESPMEM_MUST_COPY); - // At shis point m_etag.get_option(ETag::COMPRESSED_CONTENT) and - // shouldCompress can have different values. This can happen for a 304 (Not - // Modified) response generated while handling a conditional If-None-Match - // request. In that case the m_etag (together with its COMPRESSED_CONTENT - // option) is obtained from the ETag list of the If-None-Match header and the - // response has no body (which shouldn't be compressed). - if ( m_etag.get_option(ETag::COMPRESSED_CONTENT) ) { + if (shouldCompress) { MHD_add_response_header( response, MHD_HTTP_HEADER_VARY, "Accept-Encoding"); - } - if (shouldCompress) { MHD_add_response_header( response, MHD_HTTP_HEADER_CONTENT_ENCODING, "deflate"); }