From c57b8f05b4497a0fdca30c7ba301d922d8638ad8 Mon Sep 17 00:00:00 2001 From: Francesco Chemolli Date: Tue, 27 Sep 2011 08:14:57 +0200 Subject: [PATCH] Improved HttpHdrCc documentation Reverted spurious change in Makefile.am Fixed potential null pointer dereference in refresh.cc Reverted unnecessary changes to HttpHeader::getCc Removed explicit constructor requirement for HttpHdrCc --- src/HttpHdrCc.h | 18 +++++++++++++++++- src/HttpHeader.cc | 11 +++-------- src/Makefile.am | 2 +- src/refresh.cc | 4 ++-- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/HttpHdrCc.h b/src/HttpHdrCc.h index e658900124..6de04e0520 100644 --- a/src/HttpHdrCc.h +++ b/src/HttpHdrCc.h @@ -51,31 +51,44 @@ public: static const int32_t STALE_IF_ERROR_UNSET=-1; //stale_if_error is unset static const int32_t MIN_FRESH_UNSET=-1; //min_fresh is unset - explicit HttpHdrCc() : + HttpHdrCc() : mask(0), max_age(MAX_AGE_UNSET), s_maxage(S_MAXAGE_UNSET), max_stale(MAX_STALE_UNSET), stale_if_error(STALE_IF_ERROR_UNSET), min_fresh(MIN_FRESH_UNSET) {} + /// reset data-members to default state void clear(); + + /// parse a header-string and fill in appropriate values. bool parse(const String & s); + /// max-age setter. Clear by setting to MAX_AGE_UNSET _SQUID_INLINE_ void setMaxAge(int32_t max_age); _SQUID_INLINE_ int32_t getMaxAge() const; + /// s-maxage setter. Clear by setting to S_MAXAGE_UNSET _SQUID_INLINE_ void setSMaxAge(int32_t s_maxage); _SQUID_INLINE_ int32_t getSMaxAge() const; + /// max-stale setter. Clear by setting to MAX_STALE_UNSET _SQUID_INLINE_ void setMaxStale(int32_t max_stale); _SQUID_INLINE_ int32_t getMaxStale() const; + /// stale-if-error setter. Clear by setting to STALE_IF_ERROR_UNSET _SQUID_INLINE_ void setStaleIfError(int32_t stale_if_error); _SQUID_INLINE_ int32_t getStaleIfError() const; + /// min-fresh setter. Clear by setting to MIN_FRESH_UNSET _SQUID_INLINE_ void setMinFresh(int32_t min_fresh); _SQUID_INLINE_ int32_t getMinFresh() const; MEMPROXY_CLASS(HttpHdrCc); + /** bit-mask representing what header values are set among those + * recognized by squid. + * + * managed via EBIT_SET/TEST/CLR + */ int32_t mask; private: int32_t max_age; @@ -84,6 +97,9 @@ private: int32_t stale_if_error; int32_t min_fresh; public: + /**comma-separated representation of the header values which were + * received but are not recognized. + */ String other; }; diff --git a/src/HttpHeader.cc b/src/HttpHeader.cc index e3fc42f80c..1441b942e2 100644 --- a/src/HttpHeader.cc +++ b/src/HttpHeader.cc @@ -1311,19 +1311,14 @@ HttpHeader::getLastStr(http_hdr_type id) const HttpHdrCc * HttpHeader::getCc() const { - HttpHdrCc *cc; - String s; - bool gotList; - if (!CBIT_TEST(mask, HDR_CACHE_CONTROL)) return NULL; PROF_start(HttpHeader_getCc); - gotList=getList(HDR_CACHE_CONTROL, &s); + String s; + getList(HDR_CACHE_CONTROL, &s); - cc=new HttpHdrCc(); - if (!gotList) - return cc; + HttpHdrCc *cc=new HttpHdrCc(); if (!cc->parse(s)) { delete cc; diff --git a/src/Makefile.am b/src/Makefile.am index 1789418d66..19806703ba 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1097,7 +1097,7 @@ tests_testHttpReply_LDADD=\ tests_testHttpReply_DEPENDENCIES= $(SQUID_CPPUNIT_LA) ## Tests for the ACLMaxUserIP class -## acl needs wordlist. wordlist needs MemBuf +## acl needs wordlist. wordlist needs MemBug ## MemBuf needs mem, MemBuf needs event, ## event needs cbdata. ## ACLMaxUserUP needs $(AUTH_LIBS) diff --git a/src/refresh.cc b/src/refresh.cc index fa603a9144..af4fdc7afa 100644 --- a/src/refresh.cc +++ b/src/refresh.cc @@ -268,8 +268,8 @@ refreshCheck(const StoreEntry * entry, HttpRequest * request, time_t delta) if (request && !request->flags.ignore_cc) { const HttpHdrCc *const cc = request->cache_control; - const int32_t minFresh=cc->getMinFresh(); - if (cc && minFresh!=HttpHdrCc::MIN_FRESH_UNSET) { + if (cc && cc->getMinFresh()!=HttpHdrCc::MIN_FRESH_UNSET) { + const int32_t minFresh=cc->getMinFresh(); debugs(22, 3, "\tage + min-fresh:\t" << age << " + " << minFresh << " = " << age + minFresh); debugs(22, 3, "\tcheck_time + min-fresh:\t" << check_time << " + " -- 2.47.2