From: Amos Jeffries Date: Sat, 23 Jul 2022 23:14:23 +0000 (+0000) Subject: RFC 9111: Stop treating Warning specially (#1072) X-Git-Tag: SQUID_6_0_1~145 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ac163be29691c2c8a296153331e4f6f862b2356;p=thirdparty%2Fsquid.git RFC 9111: Stop treating Warning specially (#1072) RFC 9111 obsoletes the Warning header, removing all specification requirements about it. Likewise, this update changes Squid behaviour in regards to that header: 1) Squid no longer adds Warning headers to generated or forwarded messages. Miss responses from servers/peers and hits cached by an older version of Squid may still have Warning headers. 2) On 304 revalidation, Warning header are treated the same as any other/generic header. They are added or replaced according to their presence in the 304 reply. Absent any Warning update by a 304, Squid may still deliver cached content with old Warning headers. 3) Squid no longer validates received Warning headers. RFC 7234 placed syntax requirements and limits on how old some Warning values could be (when dated). Those checks are no longer being performed. The header value is now treated as an opaque string. 4) Warning header usage and types are no longer tracked in message statistics available through cache manager. Updated documentation references to reflect RFC 7234 becoming obsolete. --- diff --git a/src/HappyConnOpener.cc b/src/HappyConnOpener.cc index 294b361714..e008ca16d0 100644 --- a/src/HappyConnOpener.cc +++ b/src/HappyConnOpener.cc @@ -453,11 +453,25 @@ HappyConnOpener::status() const return buf.c_str(); } -/// Create "503 Service Unavailable" or "504 Gateway Timeout" error depending -/// on whether this is a validation request. RFC 7234 section 5.2.2 says that -/// we MUST reply with "504 Gateway Timeout" if validation fails and cached -/// reply has proxy-revalidate, must-revalidate or s-maxage Cache-Control -/// directive. +/** + * Create "503 Service Unavailable" or "504 Gateway Timeout" error depending + * on whether this is a validation request. + * + * RFC 9111 section 5.2.2 Cache-Control response directives + * + * section 5.2.2.2 must-revalidate + * " if a cache is disconnected, the cache MUST generate an error response + * rather than reuse the stale response. The generated status code + * SHOULD be 504 (Gateway Timeout) unless another error status code is + * more applicable." + * + * section 5.2.2.8 proxy-revalidate + * " analogous to must-revalidate " + * + * section 5.2.2.10 s-maxage + * " incorporates the semantics of the + * proxy-revalidate response directive " + */ ErrorState * HappyConnOpener::makeError(const err_type type) const { diff --git a/src/HttpHeader.cc b/src/HttpHeader.cc index 7e78bba486..baa10dfb36 100644 --- a/src/HttpHeader.cc +++ b/src/HttpHeader.cc @@ -248,13 +248,6 @@ HttpHeader::append(const HttpHeader * src) bool HttpHeader::needUpdate(HttpHeader const *fresh) const { - // our 1xx Warnings must be removed - for (const auto e: entries) { - // TODO: Move into HttpHeaderEntry::is1xxWarning() before official commit. - if (e && e->id == Http::HdrType::WARNING && (e->getInt()/100 == 1)) - return true; - } - for (const auto e: fresh->entries) { if (!e || skipUpdateHeader(e->id)) continue; @@ -266,25 +259,10 @@ HttpHeader::needUpdate(HttpHeader const *fresh) const return false; } -void -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 { return - // RFC 7234, section 4.3.4: use header fields other than Warning - (id == Http::HdrType::WARNING) || // TODO: Consider updating Vary headers after comparing the magnitude of // the required changes (and/or cache losses) with compliance gains. (id == Http::HdrType::VARY); @@ -296,8 +274,6 @@ HttpHeader::update(HttpHeader const *fresh) assert(fresh); assert(this != fresh); - updateWarnings(); - const HttpHeaderEntry *e; HttpHeaderPos pos = HttpHeaderInitPos; @@ -1128,14 +1104,6 @@ HttpHeader::putSc(HttpHdrSc *sc) mb.clean(); } -void -HttpHeader::putWarning(const int code, const char *const text) -{ - char buf[512]; - snprintf(buf, sizeof(buf), "%i %s \"%s\"", code, visible_appname_string, text); - putStr(Http::HdrType::WARNING, buf); -} - /* add extension header (these fields are not parsed/analyzed/joined, etc.) */ void HttpHeader::putExt(const char *name, const char *value) diff --git a/src/HttpHeader.h b/src/HttpHeader.h index c8bdf184b7..7a5568785d 100644 --- a/src/HttpHeader.h +++ b/src/HttpHeader.h @@ -83,8 +83,7 @@ public: void clean(); void append(const HttpHeader * src); /// replaces fields with matching names and adds fresh fields with new names - /// also updates Http::HdrType::WARNINGs, assuming `fresh` is a 304 reply - /// TODO: Refactor most callers to avoid special handling of WARNINGs. + /// assuming `fresh` is a 304 reply void update(const HttpHeader *fresh); /// \returns whether calling update(fresh) would change our set of fields bool needUpdate(const HttpHeader *fresh) const; @@ -142,7 +141,6 @@ public: void putContRange(const HttpHdrContRange * cr); void putRange(const HttpHdrRange * range); void putSc(HttpHdrSc *sc); - void putWarning(const int code, const char *const text); ///< add a Warning header void putExt(const char *name, const char *value); int getInt(Http::HdrType id) const; int64_t getInt64(Http::HdrType id) const; @@ -184,7 +182,6 @@ protected: /// If block starts where it ends, then there are no fields in the header. static bool Isolate(const char **parse_start, size_t l, const char **blk_start, const char **blk_end); 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 9be1d1b3d3..329dab6065 100644 --- a/src/HttpReply.cc +++ b/src/HttpReply.cc @@ -595,70 +595,6 @@ HttpReply::inheritProperties(const Http::Message *aMsg) return true; } -void HttpReply::removeStaleWarnings() -{ - String warning; - if (header.getList(Http::HdrType::WARNING, &warning)) { - const String newWarning = removeStaleWarningValues(warning); - if (warning.size() && warning.size() == newWarning.size()) - return; // some warnings are there and none changed - header.delById(Http::HdrType::WARNING); - if (newWarning.size()) { // some warnings left - HttpHeaderEntry *const e = - new HttpHeaderEntry(Http::HdrType::WARNING, SBuf(), newWarning.termedBuf()); - header.addEntry(e); - } - } -} - -/** - * Remove warning-values with warn-date different from Date value from - * a single header entry. Returns a string with all valid warning-values. - */ -String HttpReply::removeStaleWarningValues(const String &value) -{ - String newValue; - const char *item = nullptr; - int len = 0; - const char *pos = nullptr; - while (strListGetItem(&value, ',', &item, &len, &pos)) { - bool keep = true; - // Does warning-value have warn-date (which contains quoted date)? - // We scan backwards, looking for two quoted strings. - // warning-value = warn-code SP warn-agent SP warn-text [SP warn-date] - const char *p = item + len - 1; - - while (p >= item && xisspace(*p)) --p; // skip whitespace - - // warning-value MUST end with quote - if (p >= item && *p == '"') { - const char *const warnDateEnd = p; - --p; - while (p >= item && *p != '"') --p; // find the next quote - - const char *warnDateBeg = p + 1; - --p; - while (p >= item && xisspace(*p)) --p; // skip whitespace - - if (p >= item && *p == '"' && warnDateBeg - p > 2) { - // found warn-text - String warnDate; - warnDate.append(warnDateBeg, warnDateEnd - warnDateBeg); - const time_t time = Time::ParseRfc1123(warnDate.termedBuf()); - keep = (time > 0 && time == date); // keep valid and matching date - } - } - - if (keep) { - if (newValue.size()) - newValue.append(", "); - newValue.append(item, len); - } - } - - return newValue; -} - bool HttpReply::olderThan(const HttpReply *them) const { diff --git a/src/HttpReply.h b/src/HttpReply.h index 2fbcecf7aa..6f44ef527c 100644 --- a/src/HttpReply.h +++ b/src/HttpReply.h @@ -112,9 +112,6 @@ public: */ HttpReply *clone() const; - /// Remove Warnings with warn-date different from Date value - void removeStaleWarnings(); - virtual void hdrCacheInit(); /// whether our Date header value is smaller than theirs @@ -150,8 +147,6 @@ private: */ void calcMaxBodySize(HttpRequest& request) const; - String removeStaleWarningValues(const String &value); - mutable int64_t bodySizeMax; /**< cached result of calcMaxBodySize */ HttpHdrContRange *content_range; ///< parsed Content-Range; nil for non-206 responses! diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc index b5a24b5014..f7543c7d74 100644 --- a/src/HttpRequest.cc +++ b/src/HttpRequest.cc @@ -551,8 +551,9 @@ HttpRequest::maybeCacheable() if (!method.respMaybeCacheable()) return false; - // RFC 7234 section 5.2.1.5: - // "cache MUST NOT store any part of either this request or any response to it" + // RFC 9111 section 5.2.1.5: + // "The no-store request directive indicates that a cache MUST NOT + // store any part of either this request or any response to it." // // NP: refresh_pattern ignore-no-store only applies to response messages // this test is handling request message CC header. diff --git a/src/client_side_reply.cc b/src/client_side_reply.cc index fd4ce3a228..57ac00dfd3 100644 --- a/src/client_side_reply.cc +++ b/src/client_side_reply.cc @@ -481,8 +481,10 @@ clientReplyContext::handleIMSReply(StoreIOBuffer result) // origin replied with a non-error code if (status > Http::scNone && status < Http::scInternalServerError) { - // RFC 7234 section 4: a cache MUST use the most recent response - // (as determined by the Date header field) + // RFC 9111 section 4: + // "When more than one suitable response is stored, + // a cache MUST use the most recent one + // (as determined by the Date header field)." if (new_rep.olderThan(&old_entry->mem().freshestReply())) { http->al->cache.code.err.ignored = true; debugs(88, 3, "origin replied " << status << " but with an older date header, sending old entry (" << oldStatus << ") to client"); @@ -1316,17 +1318,6 @@ clientReplyContext::buildReplyHeader() } else if (http->storeEntry()->timestamp <= squid_curtime) { hdr->putInt(Http::HdrType::AGE, squid_curtime - http->storeEntry()->timestamp); - /* Signal old objects. NB: rfc 2616 is not clear, - * by implication, on whether we should do this to all - * responses, or only cache hits. - * 14.46 states it ONLY applies for heuristically calculated - * freshness values, 13.2.4 doesn't specify the same limitation. - * We interpret RFC 2616 under the combination. - */ - /* TODO: if maxage or s-maxage is present, don't do this */ - - if (squid_curtime - http->storeEntry()->timestamp >= 86400) - hdr->putWarning(113, "This cache hit is still fresh and more than 1 day old"); } } @@ -1349,13 +1340,6 @@ clientReplyContext::buildReplyHeader() } } - // add Warnings required by RFC 2616 if serving a stale hit - if (http->request->flags.staleIfHit && http->loggingTags().isTcpHit()) { - hdr->putWarning(110, "Response is stale"); - if (http->request->flags.needValidation) - hdr->putWarning(111, "Revalidation failed"); - } - /* Filter unproxyable authentication types */ if (http->loggingTags().oldType != LOG_TCP_DENIED && hdr->has(Http::HdrType::WWW_AUTHENTICATE)) { diff --git a/src/http.cc b/src/http.cc index 7a88077e07..afc0b7623f 100644 --- a/src/http.cc +++ b/src/http.cc @@ -315,8 +315,10 @@ HttpStateData::reusableReply(HttpStateData::ReuseDecision &decision) if (EBIT_TEST(entry->flags, RELEASE_REQUEST)) return decision.make(ReuseDecision::doNotCacheButShare, "the entry has been released"); - // RFC 7234 section 4: a cache MUST use the most recent response - // (as determined by the Date header field) + // RFC 9111 section 4: + // "When more than one suitable response is stored, + // a cache MUST use the most recent one + // (as determined by the Date header field)." // TODO: whether such responses could be shareable? if (sawDateGoBack) return decision.make(ReuseDecision::reuseNot, "the response has an older date header"); @@ -715,8 +717,6 @@ HttpStateData::processReplyHeader() newrep->sources |= request->url.getScheme() == AnyP::PROTO_HTTPS ? Http::Message::srcHttps : Http::Message::srcHttp; - newrep->removeStaleWarnings(); - if (newrep->sline.version.protocol == AnyP::PROTO_HTTP && Http::Is1xx(newrep->sline.status())) { handle1xx(newrep); return; diff --git a/src/http/RegisteredHeaders.h b/src/http/RegisteredHeaders.h index 88a87c2095..e6cbeafd3e 100644 --- a/src/http/RegisteredHeaders.h +++ b/src/http/RegisteredHeaders.h @@ -26,12 +26,12 @@ enum HdrType { /*ACCEPT_FEATURES,*/ /* RFC 2295 */ ACCEPT_LANGUAGE, /**< RFC 7231 */ ACCEPT_RANGES, /**< RFC 7233 */ - AGE, /**< RFC 7234 */ + AGE, /**< RFC 9111 */ ALLOW, /**< RFC 7231 */ ALTERNATE_PROTOCOL, /**< GFE custom header we may have to erase */ AUTHENTICATION_INFO, /**< RFC 2617 */ AUTHORIZATION, /**< RFC 7235, 4559 */ - CACHE_CONTROL, /**< RFC 7234 */ + CACHE_CONTROL, /**< RFC 9111 */ CACHE_STATUS, /**< draft-ietf-httpbis-cache-header */ CDN_LOOP, /**< RFC 8586 */ CONNECTION, /**< RFC 7230 */ @@ -53,7 +53,7 @@ enum HdrType { /*DESTINATION,*/ /* RFC 2518 */ ETAG, /**< RFC 7232 */ EXPECT, /**< RFC 7231 */ - EXPIRES, /**< RFC 7234 */ + EXPIRES, /**< RFC 9111 */ FORWARDED, /**< RFC 7239 */ FROM, /**< RFC 7231 */ HOST, /**< RFC 7230 */ @@ -75,7 +75,7 @@ enum HdrType { NEGOTIATE, /**< experimental RFC 2295. Why only this one from 2295? */ /*OVERWRITE,*/ /* RFC 2518 */ ORIGIN, /* CORS Draft specification (see http://www.w3.org/TR/cors/) */ - PRAGMA, /**< RFC 7234 */ + PRAGMA, /**< deprecated RFC 7234 header */ PRIORITY, /**< RFC 9218 */ PROXY_AUTHENTICATE, /**< RFC 7235 */ PROXY_AUTHENTICATION_INFO, /**< RFC 2617 */ @@ -104,7 +104,6 @@ enum HdrType { /*VARIANT_VARY,*/ /* experimental RFC 2295 */ VARY, /**< RFC 7231 */ VIA, /**< RFC 7230 */ - WARNING, /**< RFC 7234 */ WWW_AUTHENTICATE, /**< RFC 7235, 4559 */ X_FORWARDED_FOR, /**< obsolete Squid custom header, RFC 7239 */ X_REQUEST_URI, /**< Squid custom header appended if ADD_X_REQUEST_URI is defined */ diff --git a/src/http/RegisteredHeadersHash.cci b/src/http/RegisteredHeadersHash.cci index 46bfae91fd..cbbf2fe50a 100644 --- a/src/http/RegisteredHeadersHash.cci +++ b/src/http/RegisteredHeadersHash.cci @@ -44,14 +44,14 @@ class HeaderTableRecord; enum { - TOTAL_KEYWORDS = 88, + TOTAL_KEYWORDS = 87, MIN_WORD_LENGTH = 2, MAX_WORD_LENGTH = 25, - MIN_HASH_VALUE = 5, - MAX_HASH_VALUE = 110 + MIN_HASH_VALUE = 12, + MAX_HASH_VALUE = 113 }; -/* maximum key range = 106, duplicates = 0 */ +/* maximum key range = 102, duplicates = 0 */ #ifndef GPERF_DOWNCASE #define GPERF_DOWNCASE 1 @@ -111,32 +111,32 @@ HttpHeaderHashTable::HttpHeaderHash (const char *str, size_t len) { static const unsigned char asso_values[] = { - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 42, 111, 111, 34, 111, 111, 111, 111, - 9, 111, 111, 1, 111, 111, 111, 111, 21, 111, - 111, 111, 111, 111, 111, 1, 57, 18, 34, 9, - 9, 49, 46, 35, 111, 1, 35, 5, 1, 1, - 23, 5, 33, 27, 9, 10, 6, 10, 8, 41, - 111, 111, 111, 111, 111, 111, 111, 1, 57, 18, - 34, 9, 9, 49, 46, 35, 111, 1, 35, 5, - 1, 1, 23, 5, 33, 27, 9, 10, 6, 10, - 8, 41, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111 + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 81, 114, 114, 13, 114, 114, 114, 114, + 26, 114, 114, 21, 114, 114, 114, 114, 9, 114, + 114, 114, 114, 114, 114, 24, 61, 30, 26, 10, + 34, 44, 14, 52, 114, 6, 37, 65, 6, 6, + 19, 50, 27, 16, 12, 51, 55, 51, 7, 21, + 114, 114, 114, 114, 114, 114, 114, 24, 61, 30, + 26, 10, 34, 44, 14, 52, 114, 6, 37, 65, + 6, 6, 19, 50, 27, 16, 12, 51, 55, 51, + 7, 21, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114 }; unsigned int hval = len; @@ -161,207 +161,200 @@ HttpHeaderHashTable::HttpHeaderHash (const char *str, size_t len) static const unsigned char lengthtable[] = { - 0, 0, 0, 0, 0, 3, 4, 0, 6, 0, 4, 2, 0, 10, - 0, 5, 6, 7, 11, 16, 0, 3, 4, 5, 13, 0, 0, 8, - 9, 10, 19, 12, 8, 6, 10, 10, 25, 18, 6, 7, 4, 7, - 6, 15, 16, 12, 13, 19, 12, 7, 5, 8, 15, 16, 4, 19, - 13, 7, 12, 13, 13, 16, 11, 10, 11, 7, 21, 13, 13, 11, - 10, 18, 6, 6, 10, 16, 9, 15, 4, 12, 0, 6, 13, 15, - 8, 3, 0, 14, 8, 7, 13, 15, 0, 18, 17, 17, 14, 19, - 13, 0, 0, 17, 0, 20, 0, 0, 0, 0, 0, 13, 9 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, + 0, 0, 4, 0, 0, 0, 0, 5, 6, 3, 0, 0, 4, 5, + 10, 6, 0, 8, 4, 8, 16, 8, 7, 6, 10, 7, 12, 10, + 7, 19, 8, 3, 18, 15, 6, 25, 13, 3, 4, 9, 6, 13, + 13, 19, 7, 12, 6, 7, 11, 15, 6, 16, 13, 19, 7, 16, + 14, 14, 4, 9, 21, 4, 16, 18, 20, 15, 11, 8, 12, 13, + 10, 10, 13, 16, 9, 12, 18, 17, 17, 5, 19, 15, 10, 6, + 17, 12, 13, 11, 15, 11, 13, 13, 10, 13, 0, 0, 0, 0, + 0, 13 }; static const class HeaderTableRecord HttpHeaderDefinitionsTable[] = { - {""}, {""}, {""}, {""}, {""}, -#line 96 "RegisteredHeadersHash.gperf" - {"Via", Http::HdrType::VIA, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, -#line 66 "RegisteredHeadersHash.gperf" - {"Link", Http::HdrType::LINK, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader}, - {""}, -#line 72 "RegisteredHeadersHash.gperf" - {"Pragma", Http::HdrType::PRAGMA, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, - {""}, -#line 56 "RegisteredHeadersHash.gperf" - {"From", Http::HdrType::FROM, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, #line 87 "RegisteredHeadersHash.gperf" {"TE", Http::HdrType::TE, Http::HdrFieldType::ftStr, HdrKind::RequestHeader|HdrKind::HopByHopHeader}, - {""}, -#line 39 "RegisteredHeadersHash.gperf" - {"Connection", Http::HdrType::CONNECTION, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader}, - {""}, + {""}, {""}, {""}, +#line 66 "RegisteredHeadersHash.gperf" + {"Link", Http::HdrType::LINK, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader}, + {""}, {""}, {""}, {""}, #line 80 "RegisteredHeadersHash.gperf" {"Range", Http::HdrType::RANGE, Http::HdrFieldType::ftPRange, HdrKind::RequestHeader}, #line 49 "RegisteredHeadersHash.gperf" {"Cookie", Http::HdrType::COOKIE, Http::HdrFieldType::ftStr, HdrKind::None}, -#line 50 "RegisteredHeadersHash.gperf" - {"Cookie2", Http::HdrType::COOKIE2, Http::HdrFieldType::ftStr, HdrKind::None}, -#line 46 "RegisteredHeadersHash.gperf" - {"Content-MD5", Http::HdrType::CONTENT_MD5, Http::HdrFieldType::ftStr, HdrKind::EntityHeader}, -#line 77 "RegisteredHeadersHash.gperf" - {"Proxy-Connection", Http::HdrType::PROXY_CONNECTION, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader}, - {""}, #line 31 "RegisteredHeadersHash.gperf" {"Age", Http::HdrType::AGE, Http::HdrFieldType::ftInt, HdrKind::ReplyHeader}, + {""}, {""}, #line 51 "RegisteredHeadersHash.gperf" {"Date", Http::HdrType::DATE, Http::HdrFieldType::ftDate_1123, HdrKind::GeneralHeader}, #line 88 "RegisteredHeadersHash.gperf" {"Title", Http::HdrType::TITLE, Http::HdrFieldType::ftStr, HdrKind::None}, -#line 35 "RegisteredHeadersHash.gperf" - {"Authorization", Http::HdrType::AUTHORIZATION, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, - {""}, {""}, -#line 67 "RegisteredHeadersHash.gperf" - {"Location", Http::HdrType::LOCATION, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, -#line 91 "RegisteredHeadersHash.gperf" - {"Translate", Http::HdrType::TRANSLATE, Http::HdrFieldType::ftStr, HdrKind::None}, +#line 39 "RegisteredHeadersHash.gperf" + {"Connection", Http::HdrType::CONNECTION, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader}, +#line 111 "RegisteredHeadersHash.gperf" + {"Other:", Http::HdrType::OTHER, Http::HdrFieldType::ftStr, HdrKind::EntityHeader}, + {""}, +#line 61 "RegisteredHeadersHash.gperf" + {"If-Range", Http::HdrType::IF_RANGE, Http::HdrFieldType::ftDate_1123_or_ETag, HdrKind::None}, +#line 57 "RegisteredHeadersHash.gperf" + {"Host", Http::HdrType::HOST, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, +#line 38 "RegisteredHeadersHash.gperf" + {"CDN-Loop", Http::HdrType::CDN_LOOP, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, +#line 77 "RegisteredHeadersHash.gperf" + {"Proxy-Connection", Http::HdrType::PROXY_CONNECTION, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader}, +#line 58 "RegisteredHeadersHash.gperf" + {"If-Match", Http::HdrType::IF_MATCH, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, +#line 108 "RegisteredHeadersHash.gperf" + {"FTP-Pre", Http::HdrType::FTP_PRE, Http::HdrFieldType::ftStr, HdrKind::None}, +#line 53 "RegisteredHeadersHash.gperf" + {"Expect", Http::HdrType::EXPECT, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, #line 94 "RegisteredHeadersHash.gperf" {"User-Agent", Http::HdrType::USER_AGENT, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, -#line 76 "RegisteredHeadersHash.gperf" - {"Proxy-Authorization", Http::HdrType::PROXY_AUTHORIZATION, Http::HdrFieldType::ftStr, HdrKind::RequestHeader|HdrKind::HopByHopHeader}, +#line 50 "RegisteredHeadersHash.gperf" + {"Cookie2", Http::HdrType::COOKIE2, Http::HdrFieldType::ftStr, HdrKind::None}, #line 48 "RegisteredHeadersHash.gperf" {"Content-Type", Http::HdrType::CONTENT_TYPE, Http::HdrFieldType::ftStr, HdrKind::EntityHeader}, -#line 38 "RegisteredHeadersHash.gperf" - {"CDN-Loop", Http::HdrType::CDN_LOOP, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, +#line 110 "RegisteredHeadersHash.gperf" + {"FTP-Reason", Http::HdrType::FTP_REASON, Http::HdrFieldType::ftStr, HdrKind::None}, +#line 54 "RegisteredHeadersHash.gperf" + {"Expires", Http::HdrType::EXPIRES, Http::HdrFieldType::ftDate_1123, HdrKind::EntityHeader}, +#line 76 "RegisteredHeadersHash.gperf" + {"Proxy-Authorization", Http::HdrType::PROXY_AUTHORIZATION, Http::HdrFieldType::ftStr, HdrKind::RequestHeader|HdrKind::HopByHopHeader}, +#line 67 "RegisteredHeadersHash.gperf" + {"Location", Http::HdrType::LOCATION, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, +#line 64 "RegisteredHeadersHash.gperf" + {"Key", Http::HdrType::KEY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, +#line 74 "RegisteredHeadersHash.gperf" + {"Proxy-Authenticate", Http::HdrType::PROXY_AUTHENTICATE, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, +#line 102 "RegisteredHeadersHash.gperf" + {"X-Next-Services", Http::HdrType::X_NEXT_SERVICES, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, #line 26 "RegisteredHeadersHash.gperf" {"Accept", Http::HdrType::ACCEPT, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, -#line 63 "RegisteredHeadersHash.gperf" - {"Keep-Alive", Http::HdrType::KEEP_ALIVE, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader}, -#line 111 "RegisteredHeadersHash.gperf" - {"FTP-Reason", Http::HdrType::FTP_REASON, Http::HdrFieldType::ftStr, HdrKind::None}, #line 75 "RegisteredHeadersHash.gperf" {"Proxy-Authentication-Info", Http::HdrType::PROXY_AUTHENTICATION_INFO, Http::HdrFieldType::ftStr, HdrKind::ListHeader}, -#line 74 "RegisteredHeadersHash.gperf" - {"Proxy-Authenticate", Http::HdrType::PROXY_AUTHENTICATE, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, -#line 53 "RegisteredHeadersHash.gperf" - {"Expect", Http::HdrType::EXPECT, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, -#line 109 "RegisteredHeadersHash.gperf" - {"FTP-Pre", Http::HdrType::FTP_PRE, Http::HdrFieldType::ftStr, HdrKind::None}, -#line 57 "RegisteredHeadersHash.gperf" - {"Host", Http::HdrType::HOST, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, +#line 78 "RegisteredHeadersHash.gperf" + {"Proxy-support", Http::HdrType::PROXY_SUPPORT, Http::HdrFieldType::ftStr, HdrKind::ListHeader}, +#line 96 "RegisteredHeadersHash.gperf" + {"Via", Http::HdrType::VIA, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, +#line 95 "RegisteredHeadersHash.gperf" + {"Vary", Http::HdrType::VARY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, +#line 91 "RegisteredHeadersHash.gperf" + {"Translate", Http::HdrType::TRANSLATE, Http::HdrFieldType::ftStr, HdrKind::None}, +#line 72 "RegisteredHeadersHash.gperf" + {"Pragma", Http::HdrType::PRAGMA, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, +#line 35 "RegisteredHeadersHash.gperf" + {"Authorization", Http::HdrType::AUTHORIZATION, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, +#line 47 "RegisteredHeadersHash.gperf" + {"Content-Range", Http::HdrType::CONTENT_RANGE, Http::HdrFieldType::ftPContRange, HdrKind::EntityHeader}, +#line 41 "RegisteredHeadersHash.gperf" + {"Content-Disposition", Http::HdrType::CONTENT_DISPOSITION, Http::HdrFieldType::ftStr, HdrKind::None}, #line 89 "RegisteredHeadersHash.gperf" {"Trailer", Http::HdrType::TRAILER, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader}, +#line 68 "RegisteredHeadersHash.gperf" + {"Max-Forwards", Http::HdrType::MAX_FORWARDS, Http::HdrFieldType::ftInt64, HdrKind::RequestHeader}, +#line 84 "RegisteredHeadersHash.gperf" + {"Server", Http::HdrType::SERVER, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, +#line 93 "RegisteredHeadersHash.gperf" + {"Upgrade", Http::HdrType::UPGRADE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader}, +#line 83 "RegisteredHeadersHash.gperf" + {"Retry-After", Http::HdrType::RETRY_AFTER, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, +#line 105 "RegisteredHeadersHash.gperf" + {"Front-End-Https", Http::HdrType::FRONT_END_HTTPS, Http::HdrFieldType::ftStr, HdrKind::None}, #line 71 "RegisteredHeadersHash.gperf" {"Origin", Http::HdrType::ORIGIN, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, -#line 29 "RegisteredHeadersHash.gperf" - {"Accept-Language", Http::HdrType::ACCEPT_LANGUAGE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, -#line 98 "RegisteredHeadersHash.gperf" - {"WWW-Authenticate", Http::HdrType::WWW_AUTHENTICATE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, -#line 69 "RegisteredHeadersHash.gperf" - {"Mime-Version", Http::HdrType::MIME_VERSION, Http::HdrFieldType::ftStr, HdrKind::GeneralHeader}, -#line 78 "RegisteredHeadersHash.gperf" - {"Proxy-support", Http::HdrType::PROXY_SUPPORT, Http::HdrFieldType::ftStr, HdrKind::ListHeader}, +#line 45 "RegisteredHeadersHash.gperf" + {"Content-Location", Http::HdrType::CONTENT_LOCATION, Http::HdrFieldType::ftStr, HdrKind::EntityHeader}, +#line 100 "RegisteredHeadersHash.gperf" + {"X-Squid-Error", Http::HdrType::X_SQUID_ERROR, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, #line 34 "RegisteredHeadersHash.gperf" {"Authentication-Info", Http::HdrType::AUTHENTICATION_INFO, Http::HdrFieldType::ftStr, HdrKind::ListHeader}, -#line 68 "RegisteredHeadersHash.gperf" - {"Max-Forwards", Http::HdrType::MAX_FORWARDS, Http::HdrFieldType::ftInt64, HdrKind::RequestHeader}, #line 81 "RegisteredHeadersHash.gperf" {"Referer", Http::HdrType::REFERER, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, -#line 32 "RegisteredHeadersHash.gperf" - {"Allow", Http::HdrType::ALLOW, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader}, -#line 61 "RegisteredHeadersHash.gperf" - {"If-Range", Http::HdrType::IF_RANGE, Http::HdrFieldType::ftDate_1123_or_ETag, HdrKind::None}, -#line 103 "RegisteredHeadersHash.gperf" - {"X-Next-Services", Http::HdrType::X_NEXT_SERVICES, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, -#line 45 "RegisteredHeadersHash.gperf" - {"Content-Location", Http::HdrType::CONTENT_LOCATION, Http::HdrFieldType::ftStr, HdrKind::EntityHeader}, +#line 43 "RegisteredHeadersHash.gperf" + {"Content-Language", Http::HdrType::CONTENT_LANGUAGE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader}, +#line 27 "RegisteredHeadersHash.gperf" + {"Accept-Charset", Http::HdrType::ACCEPT_CHARSET, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, +#line 44 "RegisteredHeadersHash.gperf" + {"Content-Length", Http::HdrType::CONTENT_LENGTH, Http::HdrFieldType::ftInt64, HdrKind::EntityHeader}, #line 52 "RegisteredHeadersHash.gperf" {"ETag", Http::HdrType::ETAG, Http::HdrFieldType::ftETag, HdrKind::EntityHeader}, -#line 41 "RegisteredHeadersHash.gperf" - {"Content-Disposition", Http::HdrType::CONTENT_DISPOSITION, Http::HdrFieldType::ftStr, HdrKind::None}, -#line 47 "RegisteredHeadersHash.gperf" - {"Content-Range", Http::HdrType::CONTENT_RANGE, Http::HdrFieldType::ftPContRange, HdrKind::EntityHeader}, -#line 54 "RegisteredHeadersHash.gperf" - {"Expires", Http::HdrType::EXPIRES, Http::HdrFieldType::ftDate_1123, HdrKind::EntityHeader}, +#line 70 "RegisteredHeadersHash.gperf" + {"Negotiate", Http::HdrType::NEGOTIATE, Http::HdrFieldType::ftStr, HdrKind::None}, +#line 92 "RegisteredHeadersHash.gperf" + {"Unless-Modified-Since", Http::HdrType::UNLESS_MODIFIED_SINCE, Http::HdrFieldType::ftStr, HdrKind::None}, +#line 56 "RegisteredHeadersHash.gperf" + {"From", Http::HdrType::FROM, Http::HdrFieldType::ftStr, HdrKind::RequestHeader}, +#line 42 "RegisteredHeadersHash.gperf" + {"Content-Encoding", Http::HdrType::CONTENT_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader}, +#line 33 "RegisteredHeadersHash.gperf" + {"Alternate-Protocol", Http::HdrType::ALTERNATE_PROTOCOL, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader}, +#line 103 "RegisteredHeadersHash.gperf" + {"Surrogate-Capability", Http::HdrType::SURROGATE_CAPABILITY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, +#line 29 "RegisteredHeadersHash.gperf" + {"Accept-Language", Http::HdrType::ACCEPT_LANGUAGE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, +#line 106 "RegisteredHeadersHash.gperf" + {"FTP-Command", Http::HdrType::FTP_COMMAND, Http::HdrFieldType::ftStr, HdrKind::None}, +#line 73 "RegisteredHeadersHash.gperf" + {"Priority", Http::HdrType::PRIORITY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, #line 37 "RegisteredHeadersHash.gperf" {"Cache-Status", Http::HdrType::CACHE_STATUS, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, #line 30 "RegisteredHeadersHash.gperf" {"Accept-Ranges", Http::HdrType::ACCEPT_RANGES, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, -#line 82 "RegisteredHeadersHash.gperf" - {"Request-Range", Http::HdrType::REQUEST_RANGE, Http::HdrFieldType::ftPRange, HdrKind::None}, -#line 43 "RegisteredHeadersHash.gperf" - {"Content-Language", Http::HdrType::CONTENT_LANGUAGE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader}, -#line 83 "RegisteredHeadersHash.gperf" - {"Retry-After", Http::HdrType::RETRY_AFTER, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, #line 85 "RegisteredHeadersHash.gperf" {"Set-Cookie", Http::HdrType::SET_COOKIE, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, -#line 86 "RegisteredHeadersHash.gperf" - {"Set-Cookie2", Http::HdrType::SET_COOKIE2, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, -#line 93 "RegisteredHeadersHash.gperf" - {"Upgrade", Http::HdrType::UPGRADE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader}, -#line 92 "RegisteredHeadersHash.gperf" - {"Unless-Modified-Since", Http::HdrType::UNLESS_MODIFIED_SINCE, Http::HdrFieldType::ftStr, HdrKind::None}, +#line 63 "RegisteredHeadersHash.gperf" + {"Keep-Alive", Http::HdrType::KEEP_ALIVE, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader}, #line 36 "RegisteredHeadersHash.gperf" {"Cache-Control", Http::HdrType::CACHE_CONTROL, Http::HdrFieldType::ftPCc, HdrKind::ListHeader|HdrKind::GeneralHeader}, -#line 108 "RegisteredHeadersHash.gperf" - {"FTP-Arguments", Http::HdrType::FTP_ARGUMENTS, Http::HdrFieldType::ftStr, HdrKind::None}, -#line 107 "RegisteredHeadersHash.gperf" - {"FTP-Command", Http::HdrType::FTP_COMMAND, Http::HdrFieldType::ftStr, HdrKind::None}, -#line 110 "RegisteredHeadersHash.gperf" - {"FTP-Status", Http::HdrType::FTP_STATUS, Http::HdrFieldType::ftInt, HdrKind::None}, -#line 33 "RegisteredHeadersHash.gperf" - {"Alternate-Protocol", Http::HdrType::ALTERNATE_PROTOCOL, Http::HdrFieldType::ftStr, HdrKind::HopByHopHeader}, -#line 84 "RegisteredHeadersHash.gperf" - {"Server", Http::HdrType::SERVER, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, -#line 112 "RegisteredHeadersHash.gperf" - {"Other:", Http::HdrType::OTHER, Http::HdrFieldType::ftStr, HdrKind::EntityHeader}, -#line 113 "RegisteredHeadersHash.gperf" - {"*INVALID*:", Http::HdrType::BAD_HDR, Http::HdrFieldType::ftInvalid, HdrKind::None}, -#line 42 "RegisteredHeadersHash.gperf" - {"Content-Encoding", Http::HdrType::CONTENT_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader}, -#line 70 "RegisteredHeadersHash.gperf" - {"Negotiate", Http::HdrType::NEGOTIATE, Http::HdrFieldType::ftStr, HdrKind::None}, -#line 106 "RegisteredHeadersHash.gperf" - {"Front-End-Https", Http::HdrType::FRONT_END_HTTPS, Http::HdrFieldType::ftStr, HdrKind::None}, -#line 95 "RegisteredHeadersHash.gperf" - {"Vary", Http::HdrType::VARY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, +#line 97 "RegisteredHeadersHash.gperf" + {"WWW-Authenticate", Http::HdrType::WWW_AUTHENTICATE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, +#line 55 "RegisteredHeadersHash.gperf" + {"Forwarded", Http::HdrType::FORWARDED, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, #line 40 "RegisteredHeadersHash.gperf" {"Content-Base", Http::HdrType::CONTENT_BASE, Http::HdrFieldType::ftStr, HdrKind::EntityHeader}, - {""}, -#line 79 "RegisteredHeadersHash.gperf" - {"Public", Http::HdrType::PUBLIC, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, #line 101 "RegisteredHeadersHash.gperf" - {"X-Squid-Error", Http::HdrType::X_SQUID_ERROR, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, -#line 28 "RegisteredHeadersHash.gperf" - {"Accept-Encoding", Http::HdrType::ACCEPT_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader|HdrKind::ReplyHeader}, -#line 73 "RegisteredHeadersHash.gperf" - {"Priority", Http::HdrType::PRIORITY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, -#line 64 "RegisteredHeadersHash.gperf" - {"Key", Http::HdrType::KEY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, - {""}, -#line 27 "RegisteredHeadersHash.gperf" - {"Accept-Charset", Http::HdrType::ACCEPT_CHARSET, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, -#line 58 "RegisteredHeadersHash.gperf" - {"If-Match", Http::HdrType::IF_MATCH, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, -#line 97 "RegisteredHeadersHash.gperf" - {"Warning", Http::HdrType::WARNING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, -#line 100 "RegisteredHeadersHash.gperf" - {"X-Request-URI", Http::HdrType::X_REQUEST_URI, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, -#line 99 "RegisteredHeadersHash.gperf" - {"X-Forwarded-For", Http::HdrType::X_FORWARDED_FOR, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, - {""}, -#line 102 "RegisteredHeadersHash.gperf" {"X-Accelerator-Vary", Http::HdrType::HDR_X_ACCELERATOR_VARY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader}, -#line 105 "RegisteredHeadersHash.gperf" +#line 104 "RegisteredHeadersHash.gperf" {"Surrogate-Control", Http::HdrType::SURROGATE_CONTROL, Http::HdrFieldType::ftPSc, HdrKind::ListHeader|HdrKind::ReplyHeader}, #line 59 "RegisteredHeadersHash.gperf" {"If-Modified-Since", Http::HdrType::IF_MODIFIED_SINCE, Http::HdrFieldType::ftDate_1123, HdrKind::RequestHeader}, -#line 44 "RegisteredHeadersHash.gperf" - {"Content-Length", Http::HdrType::CONTENT_LENGTH, Http::HdrFieldType::ftInt64, HdrKind::EntityHeader}, +#line 32 "RegisteredHeadersHash.gperf" + {"Allow", Http::HdrType::ALLOW, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::EntityHeader}, #line 62 "RegisteredHeadersHash.gperf" {"If-Unmodified-Since", Http::HdrType::IF_UNMODIFIED_SINCE, Http::HdrFieldType::ftDate_1123, HdrKind::None}, -#line 60 "RegisteredHeadersHash.gperf" - {"If-None-Match", Http::HdrType::IF_NONE_MATCH, Http::HdrFieldType::ftStr, HdrKind::ListHeader}, - {""}, {""}, +#line 28 "RegisteredHeadersHash.gperf" + {"Accept-Encoding", Http::HdrType::ACCEPT_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader|HdrKind::ReplyHeader}, +#line 109 "RegisteredHeadersHash.gperf" + {"FTP-Status", Http::HdrType::FTP_STATUS, Http::HdrFieldType::ftInt, HdrKind::None}, +#line 79 "RegisteredHeadersHash.gperf" + {"Public", Http::HdrType::PUBLIC, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, #line 90 "RegisteredHeadersHash.gperf" {"Transfer-Encoding", Http::HdrType::TRANSFER_ENCODING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader|HdrKind::HopByHopHeader}, - {""}, -#line 104 "RegisteredHeadersHash.gperf" - {"Surrogate-Capability", Http::HdrType::SURROGATE_CAPABILITY, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::RequestHeader}, - {""}, {""}, {""}, {""}, {""}, +#line 69 "RegisteredHeadersHash.gperf" + {"Mime-Version", Http::HdrType::MIME_VERSION, Http::HdrFieldType::ftStr, HdrKind::GeneralHeader}, +#line 82 "RegisteredHeadersHash.gperf" + {"Request-Range", Http::HdrType::REQUEST_RANGE, Http::HdrFieldType::ftPRange, HdrKind::None}, +#line 86 "RegisteredHeadersHash.gperf" + {"Set-Cookie2", Http::HdrType::SET_COOKIE2, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, +#line 98 "RegisteredHeadersHash.gperf" + {"X-Forwarded-For", Http::HdrType::X_FORWARDED_FOR, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader}, +#line 46 "RegisteredHeadersHash.gperf" + {"Content-MD5", Http::HdrType::CONTENT_MD5, Http::HdrFieldType::ftStr, HdrKind::EntityHeader}, +#line 99 "RegisteredHeadersHash.gperf" + {"X-Request-URI", Http::HdrType::X_REQUEST_URI, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader}, +#line 60 "RegisteredHeadersHash.gperf" + {"If-None-Match", Http::HdrType::IF_NONE_MATCH, Http::HdrFieldType::ftStr, HdrKind::ListHeader}, +#line 112 "RegisteredHeadersHash.gperf" + {"*INVALID*:", Http::HdrType::BAD_HDR, Http::HdrFieldType::ftInvalid, HdrKind::None}, #line 65 "RegisteredHeadersHash.gperf" {"Last-Modified", Http::HdrType::LAST_MODIFIED, Http::HdrFieldType::ftDate_1123, HdrKind::EntityHeader}, -#line 55 "RegisteredHeadersHash.gperf" - {"Forwarded", Http::HdrType::FORWARDED, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader} + {""}, {""}, {""}, {""}, {""}, +#line 107 "RegisteredHeadersHash.gperf" + {"FTP-Arguments", Http::HdrType::FTP_ARGUMENTS, Http::HdrFieldType::ftStr, HdrKind::None} }; const class HeaderTableRecord * @@ -382,5 +375,5 @@ const class HeaderTableRecord * } return nullptr; } -#line 114 "RegisteredHeadersHash.gperf" +#line 113 "RegisteredHeadersHash.gperf" diff --git a/src/http/RegisteredHeadersHash.gperf b/src/http/RegisteredHeadersHash.gperf index e37f9f96f1..accb39e43d 100644 --- a/src/http/RegisteredHeadersHash.gperf +++ b/src/http/RegisteredHeadersHash.gperf @@ -94,7 +94,6 @@ Upgrade, Http::HdrType::UPGRADE, Http::HdrFieldType::ftStr, HdrKind::ListHeader| 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 -Warning, Http::HdrType::WARNING, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader WWW-Authenticate, Http::HdrType::WWW_AUTHENTICATE, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::ReplyHeader X-Forwarded-For, Http::HdrType::X_FORWARDED_FOR, Http::HdrFieldType::ftStr, HdrKind::ListHeader|HdrKind::GeneralHeader X-Request-URI, Http::HdrType::X_REQUEST_URI, Http::HdrFieldType::ftStr, HdrKind::ReplyHeader diff --git a/src/tests/stub_HttpHeader.cc b/src/tests/stub_HttpHeader.cc index 3111855696..d7c28c6a0a 100644 --- a/src/tests/stub_HttpHeader.cc +++ b/src/tests/stub_HttpHeader.cc @@ -63,7 +63,6 @@ void HttpHeader::putCc(const HttpHdrCc *) STUB void HttpHeader::putContRange(const HttpHdrContRange *) STUB void HttpHeader::putRange(const HttpHdrRange *) STUB void HttpHeader::putSc(HttpHdrSc *) STUB -void HttpHeader::putWarning(const int, const char *const) STUB void HttpHeader::putExt(const char *, const char *) STUB int HttpHeader::getInt(Http::HdrType) const STUB_RETVAL(0) int64_t HttpHeader::getInt64(Http::HdrType) const STUB_RETVAL(0) @@ -84,7 +83,6 @@ void HttpHeader::removeConnectionHeaderEntries() STUB bool HttpHeader::Isolate(const char **, size_t, const char **, const char **) STUB_RETVAL(false) bool HttpHeader::needUpdate(const HttpHeader *) const STUB_RETVAL(false) bool HttpHeader::skipUpdateHeader(const Http::HdrType) const STUB_RETVAL(false) -void HttpHeader::updateWarnings() STUB int httpHeaderParseQuotedString(const char *, const int, String *) STUB_RETVAL(-1) SBuf httpHeaderQuoteString(const char *) STUB_RETVAL(SBuf()) void httpHeaderCalcMask(HttpHeaderMask *, Http::HdrType [], size_t) STUB