|
Squid Web Cache master
|
#include <HttpHeader.h>
Public Member Functions | |
| HttpHeader (const http_hdr_owner_type owner) | |
| HttpHeader (const HttpHeader &other) | |
| ~HttpHeader () | |
| HttpHeader & | operator= (const HttpHeader &other) |
| void | clean () |
| void | append (const HttpHeader *src) |
| void | update (const HttpHeader *fresh) |
| bool | needUpdate (const HttpHeader *fresh) const |
| void | compact () |
| int | parse (const char *header_start, size_t len, Http::ContentLengthInterpreter &interpreter) |
| int | parse (const char *buf, size_t buf_len, bool atEnd, size_t &hdr_sz, Http::ContentLengthInterpreter &interpreter) |
| void | packInto (Packable *p, bool mask_sensitive_info=false) const |
| HttpHeaderEntry * | getEntry (HttpHeaderPos *pos) const |
| HttpHeaderEntry * | findEntry (Http::HdrType id) const |
| int | delByName (const SBuf &name) |
| int | delByName (const char *name) |
| int | delById (Http::HdrType id) |
| void | delAt (HttpHeaderPos pos, int &headers_deleted) |
| void | refreshMask () |
| void | addEntry (HttpHeaderEntry *e) |
| String | getList (Http::HdrType id) const |
| bool | getList (Http::HdrType id, String *s) const |
| bool | conflictingContentLength () const |
| String | getStrOrList (Http::HdrType id) const |
| String | getByName (const SBuf &name) const |
| String | getByName (const char *name) const |
| String | getById (Http::HdrType id) const |
| bool | getByIdIfPresent (Http::HdrType id, String *result) const |
| bool | hasNamed (const SBuf &s, String *value=nullptr) const |
| bool | hasNamed (const char *name, unsigned int namelen, String *value=nullptr) const |
| SBuf | getByNameListMember (const char *name, const char *member, const char separator) const |
| SBuf | getListMember (Http::HdrType id, const char *member, const char separator) const |
| int | has (Http::HdrType id) const |
| void | addVia (const AnyP::ProtocolVersion &ver, const HttpHeader *from=nullptr) |
| void | putInt (Http::HdrType id, int number) |
| void | putInt64 (Http::HdrType id, int64_t number) |
| void | putTime (Http::HdrType id, time_t htime) |
| void | putStr (Http::HdrType id, const char *str) |
| void | putAuth (const char *auth_scheme, const char *realm) |
| void | putCc (const HttpHdrCc &cc) |
| void | putContRange (const HttpHdrContRange *cr) |
| void | putRange (const HttpHdrRange *range) |
| void | putSc (HttpHdrSc *sc) |
| void | putExt (const char *name, const char *value) |
| void | updateOrAddStr (Http::HdrType, const SBuf &) |
| int | getInt (Http::HdrType id) const |
| int64_t | getInt64 (Http::HdrType id) const |
| time_t | getTime (Http::HdrType id) const |
| const char * | getStr (Http::HdrType id) const |
| const char * | getLastStr (Http::HdrType id) const |
| HttpHdrCc * | getCc () const |
| HttpHdrRange * | getRange () const |
| HttpHdrSc * | getSc () const |
| HttpHdrContRange * | getContRange () const |
| SBuf | getAuthToken (Http::HdrType id, const char *auth_scheme) const |
| ETag | getETag (Http::HdrType id) const |
| TimeOrTag | getTimeOrTag (Http::HdrType id) const |
| int | hasListMember (Http::HdrType id, const char *member, const char separator) const |
| int | hasByNameListMember (const char *name, const char *member, const char separator) const |
| void | removeHopByHopEntries () |
| bool | chunked () const |
| bool | unsupportedTe () const |
| whether message used an unsupported and/or invalid Transfer-Encoding | |
Public Attributes | |
| std::vector< HttpHeaderEntry *, PoolingAllocator< HttpHeaderEntry * > > | entries |
| HttpHeaderMask | mask |
| http_hdr_owner_type | owner |
| int | len |
Protected Member Functions | |
| void | removeConnectionHeaderEntries () |
| bool | skipUpdateHeader (const Http::HdrType id) const |
Static Protected Member Functions | |
| static bool | Isolate (const char **parse_start, size_t l, const char **blk_start, const char **blk_end) |
Private Member Functions | |
| HttpHeaderEntry * | findLastEntry (Http::HdrType id) const |
Private Attributes | |
| bool | conflictingContentLength_ |
| bool | teUnsupported_ = false |
Definition at line 74 of file HttpHeader.h.
|
explicit |
Definition at line 280 of file HttpHeader.cc.
References assert, debugs, entries, hoEnd, hoNone, httpHeaderMaskInit(), mask, and owner.
| HttpHeader::HttpHeader | ( | const HttpHeader & | other | ) |
Definition at line 289 of file HttpHeader.cc.
References entries, httpHeaderMaskInit(), mask, and update().
| HttpHeader::~HttpHeader | ( | ) |
Definition at line 296 of file HttpHeader.cc.
References clean().
| void HttpHeader::addEntry | ( | HttpHeaderEntry * | e | ) |
Definition at line 867 of file HttpHeader.cc.
References assert, Http::BAD_HDR, CBIT_SET, CBIT_TEST, debugs, entries, headerStatsTable(), HttpHeaderEntry::id, len, HttpHeaderEntry::length(), SBuf::length(), mask, and HttpHeaderEntry::name.
Referenced by append(), copyOneHeaderFromClientsideRequestToUpstreamRequest(), Adaptation::Icap::ModXact::encapsulateHead(), Ftp::Server::handleFeatReply(), HttpStateData::httpBuildRequestHeader(), httpHdrAdd(), HttpReply::make304(), parse(), putCc(), putContRange(), putExt(), putInt(), putInt64(), putRange(), putSc(), putStr(), putTime(), update(), and updateOrAddStr().
| void HttpHeader::addVia | ( | const AnyP::ProtocolVersion & | ver, |
| const HttpHeader * | from = nullptr |
||
| ) |
Appends "this cache" information to VIA header field. Takes the initial VIA value from "from" parameter, if provided.
Definition at line 1076 of file HttpHeader.cc.
References SBuf::append(), SBuf::appendf(), Config, getList(), SBuf::isEmpty(), AnyP::ProtocolVersion::major, AnyP::ProtocolVersion::minor, SquidConfig::onoff, AnyP::PROTO_HTTP, AnyP::PROTO_HTTPS, AnyP::PROTO_NONE, AnyP::PROTO_UNKNOWN, AnyP::ProtocolVersion::protocol, AnyP::ProtocolType_str, StringToSBuf(), ThisCache, updateOrAddStr(), Http::VIA, and SquidConfig::via.
Referenced by clientReplyContext::buildReplyHeader(), and HttpStateData::httpBuildRequestHeader().
| void HttpHeader::append | ( | const HttpHeader * | src | ) |
Definition at line 364 of file HttpHeader.cc.
References addEntry(), assert, debugs, and entries.
Referenced by HttpReply::clone(), and HttpRequest::clone().
|
inline |
whether the message uses chunked Transfer-Encoding optimized implementation relies on us rejecting/removing other codings
Definition at line 169 of file HttpHeader.h.
References has(), and Http::TRANSFER_ENCODING.
Referenced by HttpRequest::checkEntityFraming(), clientProcessRequest(), HttpReply::expectingBody(), and HttpRequest::expectingBody().
| void HttpHeader::clean | ( | ) |
Definition at line 318 of file HttpHeader.cc.
References Http::any_valid_header(), assert, conflictingContentLength_, DBG_CRITICAL, debugs, entries, hoEnd, hoNone, hoReply, httpHeaderMaskInit(), HttpHeaderStats, len, mask, owner, and teUnsupported_.
Referenced by ~HttpHeader(), HttpStateData::buildRequestPrefix(), HttpReply::clean(), HttpRequest::clean(), clientPackRangeHdr(), htcpClear(), htcpHandleTstResponse(), htcpQuery(), htcpTstReply(), operator=(), parse(), and Http::Tunneler::writeRequest().
| void HttpHeader::compact | ( | ) |
Definition at line 842 of file HttpHeader.cc.
References entries.
Referenced by HttpReply::recreateOnNotModified().
|
inline |
Definition at line 113 of file HttpHeader.h.
References conflictingContentLength_.
Referenced by HttpRequest::checkEntityFraming().
| void HttpHeader::delAt | ( | HttpHeaderPos | pos, |
| int & | headers_deleted | ||
| ) |
Definition at line 825 of file HttpHeader.cc.
References assert, entries, HttpHeaderInitPos, len, SBuf::length(), HttpHeaderEntry::name, String::size(), and HttpHeaderEntry::value.
Referenced by clientReplyContext::buildReplyHeader(), delById(), delByName(), httpHdrMangleList(), removeConnectionHeaderEntries(), and removeHopByHopEntries().
| int HttpHeader::delById | ( | Http::HdrType | id | ) |
Definition at line 797 of file HttpHeader.cc.
References assert, CBIT_CLR, CBIT_TEST, debugs, delAt(), getEntry(), HttpHeaderInitPos, and mask.
Referenced by Http::Stream::buildRangeHeader(), clientReplyContext::buildReplyHeader(), clientInterpretRequestHeaders(), Adaptation::Icap::ModXact::encapsulateHead(), HttpStateData::httpBuildRequestHeader(), parse(), clientReplyContext::processConditional(), putCc(), putContRange(), putRange(), putSc(), HttpReply::removeIrrelevantContentLength(), and update().
|
inline |
Definition at line 106 of file HttpHeader.h.
References delByName().
Referenced by delByName().
deletes all fields with a given name, if any.
Definition at line 778 of file HttpHeader.cc.
References CBIT_SET, debugs, delAt(), getEntry(), HttpHeaderInitPos, httpHeaderMaskInit(), and mask.
Referenced by update().
| HttpHeaderEntry * HttpHeader::findEntry | ( | Http::HdrType | id | ) | const |
Definition at line 733 of file HttpHeader.cc.
References assert, CBIT_TEST, entries, Http::HeaderLookupTable, and mask.
Referenced by clientReplyContext::buildReplyHeader(), getContRange(), getETag(), getInt(), getInt64(), getRange(), getStr(), getStrOrList(), getTime(), getTimeOrTag(), Ftp::Server::handleRequest(), HttpReply::make304(), packInto(), and Ftp::Relay::sendCommand().
|
private |
Definition at line 758 of file HttpHeader.cc.
References assert, CBIT_TEST, entries, Http::HeaderLookupTable, and mask.
Referenced by getLastStr().
| SBuf HttpHeader::getAuthToken | ( | Http::HdrType | id, |
| const char * | auth_scheme | ||
| ) | const |
Definition at line 1406 of file HttpHeader.cc.
References assert, base64_decode_final(), base64_decode_init(), BASE64_DECODE_LENGTH, base64_decode_update(), getStr(), SBuf::rawAppendFinish(), SBuf::rawAppendStart(), and xisspace.
Referenced by Ftp::Gateway::checkAuth(), and CacheManager::ParseHeaders().
| String HttpHeader::getById | ( | Http::HdrType | id | ) | const |
Definition at line 988 of file HttpHeader.cc.
References getByIdIfPresent().
| bool HttpHeader::getByIdIfPresent | ( | Http::HdrType | id, |
| String * | result | ||
| ) | const |
returns true iff a [possibly empty] field identified by id is there when returning true, also sets the result parameter (if it is not nil)
Definition at line 1002 of file HttpHeader.cc.
References Http::BAD_HDR, getStrOrList(), and has().
Referenced by getById(), hasNamed(), and parse().
| String HttpHeader::getByName | ( | const char * | name | ) | const |
Definition at line 970 of file HttpHeader.cc.
References hasNamed().
Definition at line 979 of file HttpHeader.cc.
References hasNamed().
Referenced by Format::Format::assemble(), assembleVaryKey(), Adaptation::Icap::Options::cfgIntHeader(), Adaptation::Icap::Options::cfgTransferList(), Adaptation::Icap::Options::configure(), getByNameListMember(), hasByNameListMember(), needUpdate(), Ssl::ErrorDetailFile::parse(), and Ftp::Server::writeErrorReply().
| SBuf HttpHeader::getByNameListMember | ( | const char * | name, |
| const char * | member, | ||
| const char | separator | ||
| ) | const |
searches for the first matching key=value pair within the name-identified field
Definition at line 1048 of file HttpHeader.cc.
References assert, and getByName().
Referenced by Format::Format::assemble().
| HttpHdrCc * HttpHeader::getCc | ( | ) | const |
Definition at line 1325 of file HttpHeader.cc.
References Http::CACHE_CONTROL, CBIT_TEST, getList(), httpHdrCcUpdateStats(), httpHeaderNoteParsedEntry(), HttpHeaderStats, mask, owner, and HttpHdrCc::parse().
Referenced by HttpStateData::httpBuildRequestHeader().
| HttpHdrContRange * HttpHeader::getContRange | ( | ) | const |
Definition at line 1392 of file HttpHeader.cc.
References Http::CONTENT_RANGE, findEntry(), httpHdrContRangeParseCreate(), httpHeaderNoteParsedEntry(), HttpHeaderEntry::id, String::termedBuf(), and HttpHeaderEntry::value.
Referenced by HttpReply::hdrCacheInit().
| HttpHeaderEntry * HttpHeader::getEntry | ( | HttpHeaderPos * | pos | ) | const |
Definition at line 714 of file HttpHeader.cc.
References assert, entries, and HttpHeaderInitPos.
Referenced by Format::Format::assemble(), clientReplyContext::buildReplyHeader(), clientCheckPinning(), delById(), delByName(), getList(), Ftp::Server::handleFeatReply(), hasNamed(), HttpStateData::httpBuildRequestHeader(), httpHdrMangleList(), packInto(), Ftp::PrintReply(), removeConnectionHeaderEntries(), removeHopByHopEntries(), and update().
| ETag HttpHeader::getETag | ( | Http::HdrType | id | ) | const |
Definition at line 1448 of file HttpHeader.cc.
References assert, etagParseInit(), findEntry(), Http::ftETag, Http::HeaderLookupTable, String::termedBuf(), and HttpHeaderEntry::value.
Referenced by clientIfRangeMatch(), and StoreEntry::hasOneOfEtags().
| int HttpHeader::getInt | ( | Http::HdrType | id | ) | const |
Definition at line 1251 of file HttpHeader.cc.
References assert, findEntry(), Http::ftInt, HttpHeaderEntry::getInt(), and Http::HeaderLookupTable.
Referenced by Ftp::Server::handleFeatReply(), Ftp::PrintReply(), and Ftp::Server::writeForwardedReplyAndCall().
| int64_t HttpHeader::getInt64 | ( | Http::HdrType | id | ) | const |
Definition at line 1264 of file HttpHeader.cc.
References assert, findEntry(), Http::ftInt64, HttpHeaderEntry::getInt64(), and Http::HeaderLookupTable.
Referenced by clientGetMoreData(), clientProcessRequest(), ftpSendStor(), HttpReply::hdrCacheInit(), and urlCheckRequest().
| const char * HttpHeader::getLastStr | ( | Http::HdrType | id | ) | const |
Definition at line 1310 of file HttpHeader.cc.
References assert, findLastEntry(), Http::ftStr, Http::HeaderLookupTable, httpHeaderNoteParsedEntry(), HttpHeaderEntry::id, String::termedBuf(), and HttpHeaderEntry::value.
| String HttpHeader::getList | ( | Http::HdrType | id | ) | const |
Definition at line 919 of file HttpHeader.cc.
References assert, CBIT_TEST, debugs, getEntry(), Http::HeaderLookupTable, HttpHeaderInitPos, HttpHeaderEntry::id, mask, String::size(), strListAdd(), String::termedBuf(), and HttpHeaderEntry::value.
Referenced by addVia(), HttpStateData::blockSwitchingProtocols(), HttpStateData::buildRequestPrefix(), ClientRequestContext::clientAccessCheck(), clientInterpretRequestHeaders(), Ssl::ErrorDetailsManager::findDetail(), HttpStateData::forwardUpgrade(), getCc(), getSc(), getStrOrList(), StoreEntry::hasIfMatchEtag(), StoreEntry::hasIfNoneMatchEtag(), HttpStateData::httpBuildRequestHeader(), httpHeaderHasConnDir(), httpMakeVaryMark(), Auth::SchemeConfig::isCP1251EncodingAllowed(), TemplateFile::loadFor(), Http::One::Server::processParsedRequest(), removeConnectionHeaderEntries(), and Http::One::Server::writeControlMsgAndCall().
| bool HttpHeader::getList | ( | Http::HdrType | id, |
| String * | s | ||
| ) | const |
Definition at line 889 of file HttpHeader.cc.
References assert, CBIT_TEST, debugs, entries, Http::HeaderLookupTable, mask, String::size(), strListAdd(), and String::termedBuf().
| SBuf HttpHeader::getListMember | ( | Http::HdrType | id, |
| const char * | member, | ||
| const char | separator | ||
| ) | const |
searches for the first matching key=value pair within the field
Definition at line 1059 of file HttpHeader.cc.
References assert, and getStrOrList().
| HttpHdrRange * HttpHeader::getRange | ( | ) | const |
Definition at line 1351 of file HttpHeader.cc.
References findEntry(), httpHeaderNoteParsedEntry(), HttpHeaderEntry::id, HttpHdrRange::ParseCreate(), Http::RANGE, Http::REQUEST_RANGE, and HttpHeaderEntry::value.
Referenced by clientInterpretRequestHeaders(), and HttpRequest::hdrCacheInit().
| HttpHdrSc * HttpHeader::getSc | ( | ) | const |
Definition at line 1370 of file HttpHeader.cc.
References CBIT_TEST, getList(), httpHdrScParseCreate(), httpHeaderNoteParsedEntry(), HttpHeaderStats, mask, owner, Http::SURROGATE_CONTROL, and HttpHdrSc::updateStats().
Referenced by HttpReply::hdrCacheInit().
| const char * HttpHeader::getStr | ( | Http::HdrType | id | ) | const |
Definition at line 1294 of file HttpHeader.cc.
References assert, findEntry(), Http::ftStr, Http::HeaderLookupTable, httpHeaderNoteParsedEntry(), HttpHeaderEntry::id, String::termedBuf(), and HttpHeaderEntry::value.
Referenced by Auth::UserRequest::authenticate(), clientPackRangeHdr(), getAuthToken(), HttpReply::hdrCacheInit(), ClientRequestContext::hostHeaderVerify(), ClientRequestContext::hostHeaderVerifyFailed(), Log::Format::HttpdCombined(), httpFixupAuthentication(), Ftp::PrintReply(), purgeEntriesByHeader(), HttpStateData::reusableReply(), Log::Format::SquidReferer(), Log::Format::SquidUserAgent(), CacheManager::start(), and Ftp::Server::writeErrorReply().
| String HttpHeader::getStrOrList | ( | Http::HdrType | id | ) | const |
Definition at line 953 of file HttpHeader.cc.
References findEntry(), getList(), Http::HeaderLookupTable, and HttpHeaderEntry::value.
Referenced by getByIdIfPresent(), getListMember(), hasListMember(), ACLHTTPHeaderData::match(), and HttpReply::validatorsMatch().
| time_t HttpHeader::getTime | ( | Http::HdrType | id | ) | const |
Definition at line 1277 of file HttpHeader.cc.
References assert, findEntry(), Http::ftDate_1123, Http::HeaderLookupTable, httpHeaderNoteParsedEntry(), HttpHeaderEntry::id, Time::ParseRfc1123(), String::termedBuf(), and HttpHeaderEntry::value.
Referenced by clientInterpretRequestHeaders(), Adaptation::Icap::Options::configure(), HttpReply::hdrCacheInit(), and HttpReply::hdrExpirationTime().
| TimeOrTag HttpHeader::getTimeOrTag | ( | Http::HdrType | id | ) | const |
Definition at line 1461 of file HttpHeader.cc.
References assert, etagParseInit(), findEntry(), Http::ftDate_1123_or_ETag, Http::HeaderLookupTable, Time::ParseRfc1123(), ETag::str, TimeOrTag::tag, String::termedBuf(), TimeOrTag::time, TimeOrTag::valid, and HttpHeaderEntry::value.
Referenced by clientIfRangeMatch().
| int HttpHeader::has | ( | Http::HdrType | id | ) | const |
Definition at line 1068 of file HttpHeader.cc.
References assert, CBIT_TEST, debugs, and mask.
Referenced by HttpStateData::blockSwitchingProtocols(), Http::One::Server::buildHttpRequest(), Http::Stream::buildRangeHeader(), clientReplyContext::buildReplyHeader(), HttpStateData::buildRequestPrefix(), HttpRequest::canHandle1xx(), chunked(), ClientRequestContext::clientAccessCheck(), clientCheckPinning(), clientInterpretRequestHeaders(), clientPackRangeHdr(), HttpRequest::conditional(), copyOneHeaderFromClientsideRequestToUpstreamRequest(), getByIdIfPresent(), Ftp::Server::handleRequest(), HttpStateData::haveParsedReplyHeaders(), HttpReply::hdrExpirationTime(), HttpStateData::httpBuildRequestHeader(), httpFixupAuthentication(), ACLHTTPHeaderData::match(), Ftp::PrintReply(), clientReplyContext::processConditional(), clientReplyContext::processExpired(), Http::One::Server::processParsedRequest(), removeConnectionHeaderEntries(), Ftp::Relay::sendCommand(), CacheManager::start(), varyEvaluateMatch(), Ftp::Server::writeCustomReply(), Ftp::Server::writeErrorReply(), Ftp::Server::writeForwardedReply(), and Ftp::Server::writeForwardedReplyAndCall().
| int HttpHeader::hasByNameListMember | ( | const char * | name, |
| const char * | member, | ||
| const char | separator | ||
| ) | const |
Definition at line 1817 of file HttpHeader.cc.
References assert, getByName(), and strListGetItem().
Referenced by Adaptation::Icap::Options::configure().
| int HttpHeader::hasListMember | ( | Http::HdrType | id, |
| const char * | member, | ||
| const char | separator | ||
| ) | const |
Definition at line 1793 of file HttpHeader.cc.
References assert, getStrOrList(), and strListGetItem().
Referenced by HttpStateData::blockSwitchingProtocols(), clientInterpretRequestHeaders(), Adaptation::Icap::Options::configure(), copyOneHeaderFromClientsideRequestToUpstreamRequest(), and HttpStateData::haveParsedReplyHeaders().
| bool HttpHeader::hasNamed | ( | const char * | name, |
| unsigned int | namelen, | ||
| String * | value = nullptr |
||
| ) | const |
Definition at line 1014 of file HttpHeader.cc.
References assert, Http::BAD_HDR, SBuf::caseCmp(), getByIdIfPresent(), getEntry(), Http::HeaderLookupTable, HttpHeaderInitPos, Http::HeaderTableRecord::id, HttpHeaderEntry::id, SBuf::length(), Http::HeaderLookupTable_t::lookup(), HttpHeaderEntry::name, Http::OTHER, strListAdd(), String::termedBuf(), and HttpHeaderEntry::value.
returns true iff a [possibly empty] named field is there when returning true, also sets the value parameter (if it is not nil)
Definition at line 996 of file HttpHeader.cc.
References hasNamed(), SBuf::length(), and SBuf::rawContent().
Referenced by getByName(), getByName(), hasNamed(), ACLHTTPHeaderData::match(), needUpdate(), and SlowlyParseQuotedField().
|
staticprotected |
either finds the end of headers or returns false If the end was found: *parse_start points to the first character after the header delimiter *blk_start points to the first header character (i.e. old parse_start value) *blk_end points to the first header delimiter character (CR or LF in CR?LF). If block starts where it ends, then there are no fields in the header.
Definition at line 434 of file HttpHeader.cc.
References assert, and headersEnd().
Referenced by parse().
| bool HttpHeader::needUpdate | ( | const HttpHeader * | fresh | ) | const |
Definition at line 377 of file HttpHeader.cc.
References entries, getByName(), hasNamed(), and skipUpdateHeader().
Referenced by HttpReply::recreateOnNotModified().
| HttpHeader & HttpHeader::operator= | ( | const HttpHeader & | other | ) |
Definition at line 303 of file HttpHeader.cc.
References assert, clean(), conflictingContentLength_, len, owner, teUnsupported_, and update().
| void HttpHeader::packInto | ( | Packable * | p, |
| bool | mask_sensitive_info = false |
||
| ) | const |
Definition at line 670 of file HttpHeader.cc.
References Packable::append(), assert, Http::AUTHORIZATION, debugs, findEntry(), Http::FTP_ARGUMENTS, Http::FTP_COMMAND, getEntry(), HttpHeaderInitPos, HttpHeaderEntry::id, SBuf::length(), HttpHeaderEntry::name, HttpHeaderEntry::packInto(), Http::PROXY_AUTHORIZATION, and SBuf::rawContent().
Referenced by HttpStateData::buildRequestPrefix(), clientPackRangeHdr(), htcpClear(), htcpQuery(), htcpTstReply(), HttpRequest::pack(), HttpReply::packHeadersUsingFastPacker(), prepareLogWithRequestDetails(), and Http::Tunneler::writeRequest().
| int HttpHeader::parse | ( | const char * | buf, |
| size_t | buf_len, | ||
| bool | atEnd, | ||
| size_t & | hdr_sz, | ||
| Http::ContentLengthInterpreter & | interpreter | ||
| ) |
Parses headers stored in a buffer.
Definition at line 456 of file HttpHeader.cc.
| int HttpHeader::parse | ( | const char * | header_start, |
| size_t | len, | ||
| Http::ContentLengthInterpreter & | interpreter | ||
| ) |
Definition at line 482 of file HttpHeader.cc.
References addEntry(), assert, String::caseCmp(), Http::ContentLengthInterpreter::checkField(), clean(), Config, conflictingContentLength_, Http::CONTENT_LENGTH, DBG_IMPORTANT, debugs, delById(), getByIdIfPresent(), getStringPrefix(), Http::ContentLengthInterpreter::headerWideProblem, hoRequest, HttpHeaderStats, Http::ContentLengthInterpreter::needsSanitizing, SquidConfig::onoff, owner, HttpHeaderEntry::parse(), Http::ContentLengthInterpreter::prohibitedAndIgnored(), putInt64(), SquidConfig::relaxed_header_parser, Http::ContentLengthInterpreter::sawBad, Http::ContentLengthInterpreter::sawGood, teUnsupported_, Http::TRANSFER_ENCODING, and Http::ContentLengthInterpreter::value.
Referenced by Ssl::ErrorDetailFile::parse(), parse(), HtcpReplyData::parseHeader(), and HttpRequest::parseHeader().
| void HttpHeader::putAuth | ( | const char * | auth_scheme, |
| const char * | realm | ||
| ) |
Definition at line 1135 of file HttpHeader.cc.
References assert, httpHeaderPutStrf(), and Http::WWW_AUTHENTICATE.
Referenced by Ftp::Gateway::ftpAuthRequired(), Ftp::Gateway::loginFailed(), and CacheManager::start().
| void HttpHeader::putCc | ( | const HttpHdrCc & | cc | ) |
Definition at line 1142 of file HttpHeader.cc.
References addEntry(), MemBuf::buf, Http::CACHE_CONTROL, MemBuf::clean(), delById(), MemBuf::init(), and HttpHdrCc::packInto().
Referenced by HttpStateData::httpBuildRequestHeader(), Ftp::HttpReplyWrapper(), and MimeIcon::load().
| void HttpHeader::putContRange | ( | const HttpHdrContRange * | cr | ) |
Definition at line 1157 of file HttpHeader.cc.
References addEntry(), assert, MemBuf::buf, MemBuf::clean(), Http::CONTENT_RANGE, delById(), httpHdrContRangePackInto(), and MemBuf::init().
Referenced by httpHeaderAddContRange().
| void HttpHeader::putExt | ( | const char * | name, |
| const char * | value | ||
| ) |
Definition at line 1206 of file HttpHeader.cc.
References addEntry(), assert, debugs, and Http::OTHER.
Referenced by clientReplyContext::buildReplyHeader(), htcpTstReply(), CacheManager::PutCommonResponseHeaders(), and OptionsExtractor::visit().
| void HttpHeader::putInt | ( | Http::HdrType | id, |
| int | number | ||
| ) |
Definition at line 1099 of file HttpHeader.cc.
References addEntry(), assert, Http::ftInt, Http::HeaderLookupTable, and xitoa().
Referenced by clientReplyContext::buildReplyHeader(), htcpTstReply(), and Ftp::HttpReplyWrapper().
| void HttpHeader::putInt64 | ( | Http::HdrType | id, |
| int64_t | number | ||
| ) |
Definition at line 1108 of file HttpHeader.cc.
References addEntry(), assert, Http::ftInt64, Http::HeaderLookupTable, and xint64toa().
Referenced by Http::Stream::buildRangeHeader(), copyOneHeaderFromClientsideRequestToUpstreamRequest(), Ftp::HttpReplyWrapper(), parse(), HttpReply::redirect(), and HttpReply::setHeaders().
| void HttpHeader::putRange | ( | const HttpHdrRange * | range | ) |
Definition at line 1173 of file HttpHeader.cc.
References addEntry(), assert, MemBuf::buf, MemBuf::clean(), delById(), MemBuf::init(), HttpHdrRange::packInto(), and Http::RANGE.
| void HttpHeader::putSc | ( | HttpHdrSc * | sc | ) |
Definition at line 1189 of file HttpHeader.cc.
References addEntry(), assert, MemBuf::buf, MemBuf::clean(), delById(), MemBuf::init(), HttpHdrSc::packInto(), and Http::SURROGATE_CONTROL.
| void HttpHeader::putStr | ( | Http::HdrType | id, |
| const char * | str | ||
| ) |
Definition at line 1126 of file HttpHeader.cc.
References addEntry(), assert, Http::ftStr, and Http::HeaderLookupTable.
Referenced by StoreEntry::adjustVary(), Ftp::Gateway::appendSuccessHeader(), ConnStateData::buildFakeRequest(), ErrorState::BuildHttpReply(), clientReplyContext::buildReplyHeader(), clientPackRangeHdr(), copyOneHeaderFromClientsideRequestToUpstreamRequest(), Ftp::Relay::createHttpReply(), Adaptation::Icap::ModXact::encapsulateHead(), HttpStateData::forwardUpgrade(), Ftp::Server::handleFeatReply(), HttpStateData::httpBuildRequestHeader(), httpFixupAuthentication(), httpHeaderPutStrvf(), Ftp::HttpReplyWrapper(), peerDigestRequest(), HttpReply::redirect(), HttpReply::setHeaders(), UrnState::setUriResFromRequest(), and Http::One::Server::writeControlMsgAndCall().
| void HttpHeader::putTime | ( | Http::HdrType | id, |
| time_t | htime | ||
| ) |
Definition at line 1117 of file HttpHeader.cc.
References addEntry(), assert, Time::FormatRfc1123(), Http::ftDate_1123, and Http::HeaderLookupTable.
Referenced by clientReplyContext::buildReplyHeader(), htcpTstReply(), HttpStateData::httpBuildRequestHeader(), Ftp::HttpReplyWrapper(), HttpReply::redirect(), and HttpReply::setHeaders().
| void HttpHeader::refreshMask | ( | ) |
Definition at line 853 of file HttpHeader.cc.
References CBIT_SET, debugs, entries, httpHeaderMaskInit(), and mask.
Referenced by clientReplyContext::buildReplyHeader(), Ftp::Server::handleFeatReply(), httpHdrMangleList(), and removeConnectionHeaderEntries().
|
protected |
Definition at line 1858 of file HttpHeader.cc.
References Http::CONNECTION, delAt(), getEntry(), getList(), has(), HttpHeaderInitPos, HttpHeaderEntry::name, refreshMask(), and strListIsMember().
Referenced by removeHopByHopEntries().
| void HttpHeader::removeHopByHopEntries | ( | ) |
Definition at line 1841 of file HttpHeader.cc.
References CBIT_CLR, delAt(), getEntry(), Http::HeaderLookupTable, HttpHeaderInitPos, HttpHeaderEntry::id, mask, and removeConnectionHeaderEntries().
Referenced by clientReplyContext::buildReplyHeader(), Adaptation::Icap::ModXact::encapsulateHead(), and Http::One::Server::writeControlMsgAndCall().
|
protected |
Definition at line 391 of file HttpHeader.cc.
References Http::VARY.
Referenced by needUpdate(), and update().
|
inline |
Definition at line 172 of file HttpHeader.h.
References teUnsupported_.
Referenced by HttpRequest::checkEntityFraming().
| void HttpHeader::update | ( | const HttpHeader * | fresh | ) |
replaces fields with matching names and adds fresh fields with new names assuming fresh is a 304 reply
Definition at line 400 of file HttpHeader.cc.
References addEntry(), assert, HttpHeaderEntry::clone(), debugs, delById(), delByName(), getEntry(), Http::HeaderLookupTable, HttpHeaderInitPos, HttpHeaderEntry::id, HttpHeaderEntry::name, Http::OTHER, and skipUpdateHeader().
Referenced by HttpHeader(), operator=(), and HttpReply::recreateOnNotModified().
| void HttpHeader::updateOrAddStr | ( | Http::HdrType | id, |
| const SBuf & | newValue | ||
| ) |
Ensures that the header has the given field, removing or replacing any same-name fields with conflicting values as needed.
Definition at line 1214 of file HttpHeader.cc.
References addEntry(), assert, Assure, SBuf::c_str(), CBIT_TEST, SBuf::cmp(), debugs, entries, Http::ftStr, Http::HeaderLookupTable, SBuf::length(), mask, SBuf::plength(), SBuf::rawContent(), and String::SizeMaxXXX().
Referenced by addVia(), ErrorState::BuildHttpReply(), Http::One::Server::buildHttpRequest(), and Ftp::Server::setDataCommand().
|
private |
found different Content-Length fields
Definition at line 194 of file HttpHeader.h.
Referenced by clean(), conflictingContentLength(), operator=(), and parse().
| std::vector<HttpHeaderEntry*, PoolingAllocator<HttpHeaderEntry*> > HttpHeader::entries |
parsed fields in raw format
Definition at line 175 of file HttpHeader.h.
Referenced by HttpHeader(), HttpHeader(), addEntry(), append(), clean(), compact(), delAt(), findEntry(), findLastEntry(), getEntry(), getList(), needUpdate(), refreshMask(), and updateOrAddStr().
| int HttpHeader::len |
length when packed, not counting terminating null-byte
Definition at line 178 of file HttpHeader.h.
Referenced by addEntry(), clean(), delAt(), operator=(), peerDigestRequest(), HttpReply::prefixLen(), and HttpRequest::prefixLen().
| HttpHeaderMask HttpHeader::mask |
bit set <=> entry present
Definition at line 176 of file HttpHeader.h.
Referenced by HttpHeader(), HttpHeader(), addEntry(), clean(), delById(), delByName(), findEntry(), findLastEntry(), getCc(), getList(), getList(), getSc(), has(), refreshMask(), removeHopByHopEntries(), and updateOrAddStr().
| http_hdr_owner_type HttpHeader::owner |
request or reply
Definition at line 177 of file HttpHeader.h.
Referenced by HttpHeader(), clean(), getCc(), getSc(), HttpStateData::httpBuildRequestHeader(), operator=(), and parse().
|
private |
unsupported encoding, unnecessary syntax characters, and/or invalid field-value found in Transfer-Encoding header
Definition at line 197 of file HttpHeader.h.
Referenced by clean(), operator=(), parse(), and unsupportedTe().