X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=src%2FHttpHeader.h;h=64b0651c5ff6e31e13f80380c937f9d2bcc76e08;hb=5b74111aff8948e869959113241adada0cd488c2;hp=0a06802ad7b38c3a5a84898f6462d4b2ff253766;hpb=5d3aafbed3edd9d4cc50d9f276010c51c6b942fe;p=thirdparty%2Fsquid.git diff --git a/src/HttpHeader.h b/src/HttpHeader.h index 0a06802ad7..64b0651c5f 100644 --- a/src/HttpHeader.h +++ b/src/HttpHeader.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1996-2017 The Squid Software Foundation and contributors + * Copyright (C) 1996-2018 The Squid Software Foundation and contributors * * Squid software is distributed under GPLv2+ license and includes * contributions from numerous individuals and organizations. @@ -9,6 +9,7 @@ #ifndef SQUID_HTTPHEADER_H #define SQUID_HTTPHEADER_H +#include "anyp/ProtocolVersion.h" #include "base/LookupTable.h" #include "http/RegisteredHeaders.h" /* because we pass a spec by value */ @@ -51,7 +52,7 @@ class HttpHeaderEntry MEMPROXY_CLASS(HttpHeaderEntry); public: - HttpHeaderEntry(Http::HdrType id, const char *name, const char *value); + HttpHeaderEntry(Http::HdrType id, const SBuf &name, const char *value); ~HttpHeaderEntry(); static HttpHeaderEntry *parse(const char *field_start, const char *field_end); HttpHeaderEntry *clone() const; @@ -60,7 +61,7 @@ public: int64_t getInt64() const; Http::HdrType id; - String name; + SBuf name; String value; }; @@ -92,7 +93,11 @@ public: void packInto(Packable * p, bool mask_sensitive_info=false) const; HttpHeaderEntry *getEntry(HttpHeaderPos * pos) const; HttpHeaderEntry *findEntry(Http::HdrType id) const; - int delByName(const char *name); + /// deletes all fields with a given name, if any. + /// \return #fields deleted + int delByName(const SBuf &name); + /// \deprecated use SBuf method instead. performance regression: reallocates + int delByName(const char *name) { return delByName(SBuf(name)); } int delById(Http::HdrType id); void delAt(HttpHeaderPos pos, int &headers_deleted); void refreshMask(); @@ -111,10 +116,14 @@ public: /// returns true iff a [possibly empty] named field is there /// when returning true, also sets the `value` parameter (if it is not nil) bool hasNamed(const SBuf &s, String *value = 0) const; - bool hasNamed(const char *name, int namelen, String *value = 0) const; + /// \deprecated use SBuf method instead. + bool hasNamed(const char *name, unsigned int namelen, String *value = 0) const; String getByNameListMember(const char *name, const char *member, const char separator) const; String getListMember(Http::HdrType id, const char *member, const char separator) const; int has(Http::HdrType id) const; + /// Appends "this cache" information to VIA header field. + /// Takes the initial VIA value from "from" parameter, if provided. + void addVia(const AnyP::ProtocolVersion &ver, const HttpHeader *from = 0); void putInt(Http::HdrType id, int number); void putInt64(Http::HdrType id, int64_t number); void putTime(Http::HdrType id, time_t htime);