From: Eduard Bagdasaryan Date: Sat, 25 Jun 2016 14:35:41 +0000 (+1200) Subject: HTTP/1.1: Update all stored headers on 304 revalidation. X-Git-Tag: SQUID_4_0_12~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2d4f252d95dcf979601552f2c86fae980beff05f;p=thirdparty%2Fsquid.git HTTP/1.1: Update all stored headers on 304 revalidation. According to RFC 7234 section 4.3.4. when a proxy receives 304 (Not Modified) response, it should update every header, except Warning headers (which need special processing). Also RFC 7232 section 4.1. does not prohibit origin servers from sending any headers in 304 responses. That means that Squid now should not ignore headers, which earlier were considered as malicious/faulty. --- diff --git a/src/HttpHeader.cc b/src/HttpHeader.cc index 0f9b965f4e..cc26f255e0 100644 --- a/src/HttpHeader.cc +++ b/src/HttpHeader.cc @@ -155,7 +155,7 @@ HttpHeader::HttpHeader(const http_hdr_owner_type anOwner): owner(anOwner), len(0 HttpHeader::HttpHeader(const HttpHeader &other): owner(other.owner), len(other.len), conflictingContentLength_(false) { httpHeaderMaskInit(&mask, 0); - update(&other, NULL); // will update the mask as well + update(&other); // will update the mask as well } HttpHeader::~HttpHeader() @@ -170,7 +170,7 @@ HttpHeader::operator =(const HttpHeader &other) // we do not really care, but the caller probably does assert(owner == other.owner); clean(); - update(&other, NULL); // will update the mask as well + update(&other); // will update the mask as well len = other.len; conflictingContentLength_ = other.conflictingContentLength_; } @@ -239,17 +239,39 @@ HttpHeader::append(const HttpHeader * src) } void -HttpHeader::update (HttpHeader const *fresh, HttpHeaderMask const *denied_mask) +HttpHeader::updateWarnings() +{ + int count = 0; + HttpHeaderPos pos = HttpHeaderInitPos; + + // RFC 7234, section 4.3.4: delete 1xx warnings and retain 2xx warnings + while (HttpHeaderEntry *e = getEntry(&pos)) { + if (e->id == Http::HdrType::WARNING && (e->getInt()/100 == 1) ) + delAt(pos, count); + } +} + +bool +HttpHeader::skipUpdateHeader(const Http::HdrType id) const +{ + // RFC 7234, section 4.3.4: use fields other from Warning for update + return id == Http::HdrType::WARNING; +} + +void +HttpHeader::update(HttpHeader const *fresh) { const HttpHeaderEntry *e; HttpHeaderPos pos = HttpHeaderInitPos; assert(fresh); assert(this != fresh); + updateWarnings(); + while ((e = fresh->getEntry(&pos))) { /* deny bad guys (ok to check for Http::HdrType::OTHER) here */ - if (denied_mask && CBIT_TEST(*denied_mask, e->id)) + if (skipUpdateHeader(e->id)) continue; if (e->id != Http::HdrType::OTHER) @@ -262,7 +284,7 @@ HttpHeader::update (HttpHeader const *fresh, HttpHeaderMask const *denied_mask) while ((e = fresh->getEntry(&pos))) { /* deny bad guys (ok to check for Http::HdrType::OTHER) here */ - if (denied_mask && CBIT_TEST(*denied_mask, e->id)) + if (skipUpdateHeader(e->id)) continue; debugs(55, 7, "Updating header '" << Http::HeaderLookupTable.lookup(e->id).name << "' in cached entry"); diff --git a/src/HttpHeader.h b/src/HttpHeader.h index c913f4e22b..4c9655111d 100644 --- a/src/HttpHeader.h +++ b/src/HttpHeader.h @@ -81,7 +81,7 @@ public: /* Interface functions */ void clean(); void append(const HttpHeader * src); - void update (HttpHeader const *fresh, HttpHeaderMask const *denied_mask); + void update(HttpHeader const *fresh); void compact(); int parse(const char *header_start, size_t len); void packInto(Packable * p, bool mask_sensitive_info=false) const; @@ -145,6 +145,8 @@ public: protected: /** \deprecated Public access replaced by removeHopByHopEntries() */ void removeConnectionHeaderEntries(); + bool skipUpdateHeader(const Http::HdrType id) const; + void updateWarnings(); private: HttpHeaderEntry *findLastEntry(Http::HdrType id) const; diff --git a/src/HttpReply.cc b/src/HttpReply.cc index 0fc1ff5c86..e40a212cb2 100644 --- a/src/HttpReply.cc +++ b/src/HttpReply.cc @@ -25,39 +25,6 @@ #include "Store.h" #include "StrList.h" -/* local constants */ - -/* If we receive a 304 from the origin during a cache revalidation, we must - * update the headers of the existing entry. Specifically, we need to update all - * end-to-end headers and not any hop-by-hop headers (rfc2616 13.5.3). - * - * This is not the whole story though: since it is possible for a faulty/malicious - * origin server to set headers it should not in a 304, we must explicitly ignore - * these too. Specifically all entity-headers except those permitted in a 304 - * (rfc2616 10.3.5) must be ignored. - * - * The list of headers we don't update is made up of: - * all hop-by-hop headers - * all entity-headers except Expires and Content-Location - * - * These headers are now stored in RegisteredHeadersHash.gperf and accessible - * as Http::HeaderLookupTable.lookup(id).denied304 - */ -static HttpHeaderMask Denied304HeadersMask; - -/* module initialization */ -void -httpReplyInitModule(void) -{ - assert(Http::scNone == 0); // HttpReply::parse() interface assumes that - httpHeaderMaskInit(&Denied304HeadersMask, 0); - - for (auto id : WholeEnum()) { - if (Http::HeaderLookupTable.lookup(id).denied304) - CBIT_SET(Denied304HeadersMask, id); - } -} - HttpReply::HttpReply() : HttpMsg(hoReply), date (0), last_modified (0), expires (0), surrogate_control (NULL), content_range (NULL), keep_alive (0), protoPrefix("HTTP/"), bodySizeMax(-2) @@ -276,8 +243,7 @@ HttpReply::updateOnNotModified(HttpReply const * freshRep) /* clean cache */ hdrCacheClean(); /* update raw headers */ - header.update(&freshRep->header, - (const HttpHeaderMask *) &Denied304HeadersMask); + header.update(&freshRep->header); header.compact(); /* init cache */ diff --git a/src/adaptation/History.cc b/src/adaptation/History.cc index 58a8369c4f..d7c9239fd6 100644 --- a/src/adaptation/History.cc +++ b/src/adaptation/History.cc @@ -150,9 +150,9 @@ bool Adaptation::History::extractNextServices(String &value) void Adaptation::History::recordMeta(const HttpHeader *lm) { lastMeta.clean(); - lastMeta.update(lm, NULL); + lastMeta.update(lm); - allMeta.update(lm, NULL); + allMeta.update(lm); allMeta.compact(); } diff --git a/src/client_side_request.cc b/src/client_side_request.cc index bd0be32c29..87e9aa7c88 100644 --- a/src/client_side_request.cc +++ b/src/client_side_request.cc @@ -357,7 +357,7 @@ clientBeginRequest(const HttpRequestMethod& method, char const *url, CSCB * stre * correctness. */ if (header) - request->header.update(header, NULL); + request->header.update(header); http->log_uri = xstrdup(urlCanonicalClean(request)); diff --git a/src/http/RegisteredHeadersHash.cci b/src/http/RegisteredHeadersHash.cci index bc5484e72d..542a3a0334 100644 --- a/src/http/RegisteredHeadersHash.cci +++ b/src/http/RegisteredHeadersHash.cci @@ -182,7 +182,7 @@ static const struct HeaderTableRecord HttpHeaderDefinitionsTable[] = #line 79 "RegisteredHeadersHash.gperf" {"Referer", Http::HdrType::REFERER, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, #line 85 "RegisteredHeadersHash.gperf" - {"TE", Http::HdrType::TE, Http::HdrFieldType::ftStr, HdrKind::RequestHeader|HdrKind::HopByHopHeader|HdrKind::Denied304Header}, + {"TE", Http::HdrType::TE, Http::HdrFieldType::ftStr, HdrKind::RequestHeader|HdrKind::HopByHopHeader}, #line 94 "RegisteredHeadersHash.gperf" {"Via", Http::HdrType::VIA, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, {""}, @@ -191,7 +191,7 @@ static const struct HeaderTableRecord HttpHeaderDefinitionsTable[] = #line 51 "RegisteredHeadersHash.gperf" {"Expect", Http::HdrType::EXPECT, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, #line 87 "RegisteredHeadersHash.gperf" - {"Trailer", Http::HdrType::TRAILER, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader|HdrKind::Denied304Header}, + {"Trailer", Http::HdrType::TRAILER, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader}, #line 80 "RegisteredHeadersHash.gperf" {"Request-Range", Http::HdrType::REQUEST_RANGE, Http::HdrFieldType::ftPRange, HdrKind::None}, #line 26 "RegisteredHeadersHash.gperf" @@ -221,7 +221,7 @@ static const struct HeaderTableRecord HttpHeaderDefinitionsTable[] = #line 35 "RegisteredHeadersHash.gperf" {"Authorization", Http::HdrType::AUTHORIZATION, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, #line 45 "RegisteredHeadersHash.gperf" - {"Content-Range", Http::HdrType::CONTENT_RANGE, Http::HdrFieldType::ftPContRange, HdrKind::EntityHeader|HdrKind::Denied304Header}, + {"Content-Range", Http::HdrType::CONTENT_RANGE, Http::HdrFieldType::ftPContRange, HdrKind::EntityHeader}, #line 66 "RegisteredHeadersHash.gperf" {"Location", Http::HdrType::LOCATION, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, #line 77 "RegisteredHeadersHash.gperf" @@ -231,11 +231,11 @@ static const struct HeaderTableRecord HttpHeaderDefinitionsTable[] = #line 49 "RegisteredHeadersHash.gperf" {"Date", Http::HdrType::DATE, Http::HdrFieldType::ftDate_1123, HdrKind::GeneralHeader}, #line 46 "RegisteredHeadersHash.gperf" - {"Content-Type", Http::HdrType::CONTENT_TYPE, Http::HdrFieldType::ftStr, HdrKind::EntityHeader|HdrKind::Denied304Header}, + {"Content-Type", Http::HdrType::CONTENT_TYPE, Http::HdrFieldType::ftStr, HdrKind::EntityHeader}, #line 91 "RegisteredHeadersHash.gperf" - {"Upgrade", Http::HdrType::UPGRADE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader|HdrKind::Denied304Header}, + {"Upgrade", Http::HdrType::UPGRADE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader}, #line 72 "RegisteredHeadersHash.gperf" - {"Proxy-Authenticate", Http::HdrType::PROXY_AUTHENTICATE, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader|HdrKind::Denied304Header}, + {"Proxy-Authenticate", Http::HdrType::PROXY_AUTHENTICATE, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, #line 33 "RegisteredHeadersHash.gperf" {"Alternate-Protocol", Http::HdrType::ALTERNATE_PROTOCOL, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader}, #line 113 "RegisteredHeadersHash.gperf" @@ -250,17 +250,17 @@ static const struct HeaderTableRecord HttpHeaderDefinitionsTable[] = {"Proxy-Connection", Http::HdrType::PROXY_CONNECTION, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader}, {""}, #line 74 "RegisteredHeadersHash.gperf" - {"Proxy-Authorization", Http::HdrType::PROXY_AUTHORIZATION, Http::HdrFieldType::ftStr, HdrKind::RequestHeader|HdrKind::HopByHopHeader|HdrKind::Denied304Header}, + {"Proxy-Authorization", Http::HdrType::PROXY_AUTHORIZATION, Http::HdrFieldType::ftStr, HdrKind::RequestHeader|HdrKind::HopByHopHeader}, #line 55 "RegisteredHeadersHash.gperf" {"Host", Http::HdrType::HOST, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, #line 41 "RegisteredHeadersHash.gperf" - {"Content-Language", Http::HdrType::CONTENT_LANGUAGE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader|HdrKind::Denied304Header}, + {"Content-Language", Http::HdrType::CONTENT_LANGUAGE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader}, #line 101 "RegisteredHeadersHash.gperf" {"X-Squid-Error", Http::HdrType::X_SQUID_ERROR, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, #line 83 "RegisteredHeadersHash.gperf" {"Set-Cookie", Http::HdrType::SET_COOKIE, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, #line 32 "RegisteredHeadersHash.gperf" - {"Allow", Http::HdrType::ALLOW, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader|HdrKind::Denied304Header}, + {"Allow", Http::HdrType::ALLOW, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader}, #line 36 "RegisteredHeadersHash.gperf" {"Cache-Control", Http::HdrType::CACHE_CONTROL, Http::HdrFieldType::ftPCc, HdrKind::ListHeader|HdrKind::GeneralHeader}, #line 105 "RegisteredHeadersHash.gperf" @@ -292,7 +292,7 @@ static const struct HeaderTableRecord HttpHeaderDefinitionsTable[] = #line 50 "RegisteredHeadersHash.gperf" {"ETag", Http::HdrType::ETAG, Http::HdrFieldType::ftETag, HdrKind::EntityHeader}, #line 62 "RegisteredHeadersHash.gperf" - {"Keep-Alive", Http::HdrType::KEEP_ALIVE, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader|HdrKind::Denied304Header}, + {"Keep-Alive", Http::HdrType::KEEP_ALIVE, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader}, #line 102 "RegisteredHeadersHash.gperf" {"X-Accelerator-Vary", Http::HdrType::HDR_X_ACCELERATOR_VARY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, #line 103 "RegisteredHeadersHash.gperf" @@ -318,15 +318,15 @@ static const struct HeaderTableRecord HttpHeaderDefinitionsTable[] = #line 99 "RegisteredHeadersHash.gperf" {"X-Forwarded-For", Http::HdrType::X_FORWARDED_FOR, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, #line 42 "RegisteredHeadersHash.gperf" - {"Content-Length", Http::HdrType::CONTENT_LENGTH, Http::HdrFieldType::ftInt64, HdrKind::EntityHeader|HdrKind::Denied304Header}, + {"Content-Length", Http::HdrType::CONTENT_LENGTH, Http::HdrFieldType::ftInt64, HdrKind::EntityHeader}, #line 106 "RegisteredHeadersHash.gperf" {"Front-End-Https", Http::HdrType::FRONT_END_HTTPS, Http::HdrFieldType::ftStr, HdrKind::None}, #line 68 "RegisteredHeadersHash.gperf" {"Mime-Version", Http::HdrType::MIME_VERSION, Http::HdrFieldType::ftStr, HdrKind::GeneralHeader}, #line 44 "RegisteredHeadersHash.gperf" - {"Content-MD5", Http::HdrType::CONTENT_MD5, Http::HdrFieldType::ftStr, HdrKind::EntityHeader|HdrKind::Denied304Header}, + {"Content-MD5", Http::HdrType::CONTENT_MD5, Http::HdrFieldType::ftStr, HdrKind::EntityHeader}, #line 37 "RegisteredHeadersHash.gperf" - {"Connection", Http::HdrType::CONNECTION, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader|HdrKind::Denied304Header}, + {"Connection", Http::HdrType::CONNECTION, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader}, #line 53 "RegisteredHeadersHash.gperf" {"Forwarded", Http::HdrType::FORWARDED, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, #line 111 "RegisteredHeadersHash.gperf" @@ -338,12 +338,12 @@ static const struct HeaderTableRecord HttpHeaderDefinitionsTable[] = #line 34 "RegisteredHeadersHash.gperf" {"Authentication-Info", Http::HdrType::AUTHENTICATION_INFO, Http::HdrFieldType::ftStr, HdrKind::ListHeader}, #line 88 "RegisteredHeadersHash.gperf" - {"Transfer-Encoding", Http::HdrType::TRANSFER_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader|HdrKind::Denied304Header}, + {"Transfer-Encoding", Http::HdrType::TRANSFER_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader}, {""}, #line 108 "RegisteredHeadersHash.gperf" {"FTP-Arguments", Http::HdrType::FTP_ARGUMENTS, Http::HdrFieldType::ftStr, HdrKind::None}, #line 40 "RegisteredHeadersHash.gperf" - {"Content-Encoding", Http::HdrType::CONTENT_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader|HdrKind::Denied304Header}, + {"Content-Encoding", Http::HdrType::CONTENT_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader}, #line 73 "RegisteredHeadersHash.gperf" {"Proxy-Authentication-Info", Http::HdrType::PROXY_AUTHENTICATION_INFO, Http::HdrFieldType::ftStr, HdrKind::ListHeader}, {""}, {""}, {""}, {""}, {""}, {""}, diff --git a/src/http/RegisteredHeadersHash.gperf b/src/http/RegisteredHeadersHash.gperf index 38ae19db14..e5e22366e6 100644 --- a/src/http/RegisteredHeadersHash.gperf +++ b/src/http/RegisteredHeadersHash.gperf @@ -29,21 +29,21 @@ Accept-Encoding, Http::HdrType::ACCEPT_ENCODING, Http::HdrFieldType::ftStr, HdrK Accept-Language, Http::HdrType::ACCEPT_LANGUAGE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader Accept-Ranges, Http::HdrType::ACCEPT_RANGES, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader Age, Http::HdrType::AGE, Http::HdrFieldType::ftInt, HdrKind::ReplyHeader -Allow, Http::HdrType::ALLOW, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader|HdrKind::Denied304Header +Allow, Http::HdrType::ALLOW, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader Alternate-Protocol, Http::HdrType::ALTERNATE_PROTOCOL, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader Authentication-Info, Http::HdrType::AUTHENTICATION_INFO, Http::HdrFieldType::ftStr, HdrKind::ListHeader Authorization, Http::HdrType::AUTHORIZATION, Http::HdrFieldType::ftStr, HdrKind::RequestHeader Cache-Control, Http::HdrType::CACHE_CONTROL, Http::HdrFieldType::ftPCc, HdrKind::ListHeader|HdrKind::GeneralHeader -Connection, Http::HdrType::CONNECTION, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader|HdrKind::Denied304Header +Connection, Http::HdrType::CONNECTION, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader Content-Base, Http::HdrType::CONTENT_BASE, Http::HdrFieldType::ftStr, HdrKind::EntityHeader Content-Disposition, Http::HdrType::CONTENT_DISPOSITION, Http::HdrFieldType::ftStr, HdrKind::None -Content-Encoding, Http::HdrType::CONTENT_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader|HdrKind::Denied304Header -Content-Language, Http::HdrType::CONTENT_LANGUAGE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader|HdrKind::Denied304Header -Content-Length, Http::HdrType::CONTENT_LENGTH, Http::HdrFieldType::ftInt64, HdrKind::EntityHeader|HdrKind::Denied304Header +Content-Encoding, Http::HdrType::CONTENT_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader +Content-Language, Http::HdrType::CONTENT_LANGUAGE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader +Content-Length, Http::HdrType::CONTENT_LENGTH, Http::HdrFieldType::ftInt64, HdrKind::EntityHeader Content-Location, Http::HdrType::CONTENT_LOCATION, Http::HdrFieldType::ftStr, HdrKind::EntityHeader -Content-MD5, Http::HdrType::CONTENT_MD5, Http::HdrFieldType::ftStr, HdrKind::EntityHeader|HdrKind::Denied304Header -Content-Range, Http::HdrType::CONTENT_RANGE, Http::HdrFieldType::ftPContRange, HdrKind::EntityHeader|HdrKind::Denied304Header -Content-Type, Http::HdrType::CONTENT_TYPE, Http::HdrFieldType::ftStr, HdrKind::EntityHeader|HdrKind::Denied304Header +Content-MD5, Http::HdrType::CONTENT_MD5, Http::HdrFieldType::ftStr, HdrKind::EntityHeader +Content-Range, Http::HdrType::CONTENT_RANGE, Http::HdrFieldType::ftPContRange, HdrKind::EntityHeader +Content-Type, Http::HdrType::CONTENT_TYPE, Http::HdrFieldType::ftStr, HdrKind::EntityHeader Cookie, Http::HdrType::COOKIE, Http::HdrFieldType::ftStr, HdrKind::None Cookie2, Http::HdrType::COOKIE2, Http::HdrFieldType::ftStr, HdrKind::None Date, Http::HdrType::DATE, Http::HdrFieldType::ftDate_1123, HdrKind::GeneralHeader @@ -59,7 +59,7 @@ If-Modified-Since, Http::HdrType::IF_MODIFIED_SINCE, Http::HdrFieldType::ftDate_ If-None-Match, Http::HdrType::IF_NONE_MATCH, Http::HdrFieldType::ftStr, HdrKind::ListHeader If-Range, Http::HdrType::IF_RANGE, Http::HdrFieldType::ftDate_1123_or_ETag, HdrKind::None If-Unmodified-Since, Http::HdrType::IF_UNMODIFIED_SINCE, Http::HdrFieldType::ftDate_1123, HdrKind::None -Keep-Alive, Http::HdrType::KEEP_ALIVE, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader|HdrKind::Denied304Header +Keep-Alive, Http::HdrType::KEEP_ALIVE, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader Key, Http::HdrType::KEY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader Last-Modified, Http::HdrType::LAST_MODIFIED, Http::HdrFieldType::ftDate_1123, HdrKind::EntityHeader Link, Http::HdrType::LINK, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader @@ -69,9 +69,9 @@ Mime-Version, Http::HdrType::MIME_VERSION, Http::HdrFieldType::ftStr, HdrKind::G Negotiate, Http::HdrType::NEGOTIATE, Http::HdrFieldType::ftStr, HdrKind::None Origin, Http::HdrType::ORIGIN, Http::HdrFieldType::ftStr, HdrKind::RequestHeader Pragma, Http::HdrType::PRAGMA, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader -Proxy-Authenticate, Http::HdrType::PROXY_AUTHENTICATE, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader|HdrKind::Denied304Header +Proxy-Authenticate, Http::HdrType::PROXY_AUTHENTICATE, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader Proxy-Authentication-Info, Http::HdrType::PROXY_AUTHENTICATION_INFO, Http::HdrFieldType::ftStr, HdrKind::ListHeader -Proxy-Authorization, Http::HdrType::PROXY_AUTHORIZATION, Http::HdrFieldType::ftStr, HdrKind::RequestHeader|HdrKind::HopByHopHeader|HdrKind::Denied304Header +Proxy-Authorization, Http::HdrType::PROXY_AUTHORIZATION, Http::HdrFieldType::ftStr, HdrKind::RequestHeader|HdrKind::HopByHopHeader Proxy-Connection, Http::HdrType::PROXY_CONNECTION, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader Proxy-support, Http::HdrType::PROXY_SUPPORT, Http::HdrFieldType::ftStr, HdrKind::ListHeader Public, Http::HdrType::PUBLIC, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader @@ -82,13 +82,13 @@ Retry-After, Http::HdrType::RETRY_AFTER, Http::HdrFieldType::ftStr, HdrKind::Rep Server, Http::HdrType::SERVER, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader Set-Cookie, Http::HdrType::SET_COOKIE, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader Set-Cookie2, Http::HdrType::SET_COOKIE2, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader -TE, Http::HdrType::TE, Http::HdrFieldType::ftStr, HdrKind::RequestHeader|HdrKind::HopByHopHeader|HdrKind::Denied304Header +TE, Http::HdrType::TE, Http::HdrFieldType::ftStr, HdrKind::RequestHeader|HdrKind::HopByHopHeader Title, Http::HdrType::TITLE, Http::HdrFieldType::ftStr, HdrKind::None -Trailer, Http::HdrType::TRAILER, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader|HdrKind::Denied304Header -Transfer-Encoding, Http::HdrType::TRANSFER_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader|HdrKind::Denied304Header +Trailer, Http::HdrType::TRAILER, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader +Transfer-Encoding, Http::HdrType::TRANSFER_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader Translate, Http::HdrType::TRANSLATE, Http::HdrFieldType::ftStr, HdrKind::None Unless-Modified-Since, Http::HdrType::UNLESS_MODIFIED_SINCE, Http::HdrFieldType::ftStr, HdrKind::None -Upgrade, Http::HdrType::UPGRADE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader|HdrKind::Denied304Header +Upgrade, Http::HdrType::UPGRADE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader User-Agent, Http::HdrType::USER_AGENT, Http::HdrFieldType::ftStr, HdrKind::RequestHeader Vary, Http::HdrType::VARY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader Via, Http::HdrType::VIA, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader diff --git a/src/main.cc b/src/main.cc index 8eb0290b13..da80de42ec 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1180,8 +1180,6 @@ mainInitialize(void) httpHeaderInitModule(); /* must go before any header processing (e.g. the one in errorInitialize) */ - httpReplyInitModule(); /* must go before accepting replies */ - errorInitialize(); accessLogInit(); diff --git a/src/tests/testRock.cc b/src/tests/testRock.cc index 8fdffa3460..178da65930 100644 --- a/src/tests/testRock.cc +++ b/src/tests/testRock.cc @@ -146,8 +146,6 @@ testRock::commonInit() httpHeaderInitModule(); /* must go before any header processing (e.g. the one in errorInitialize) */ - httpReplyInitModule(); /* must go before accepting replies */ - mem_policy = createRemovalPolicy(Config.replPolicy); inited = true; diff --git a/src/tests/testUfs.cc b/src/tests/testUfs.cc index c346c0c5fd..71333beff0 100644 --- a/src/tests/testUfs.cc +++ b/src/tests/testUfs.cc @@ -76,8 +76,6 @@ testUfs::commonInit() httpHeaderInitModule(); /* must go before any header processing (e.g. the one in errorInitialize) */ - httpReplyInitModule(); /* must go before accepting replies */ - inited = true; }