From c43405e74fb3a53803d655d66545ead4e9d6e527 Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Sun, 26 Feb 2017 23:24:15 +1300 Subject: [PATCH] Cleanup: convert MemObject::request to Pointer --- src/MemObject.cc | 9 --------- src/MemObject.h | 7 ++----- src/http.cc | 8 ++++---- src/neighbors.cc | 4 ++-- src/refresh.cc | 2 +- src/stmem.cc | 1 + src/store.cc | 6 +++--- src/store_key_md5.h | 4 +--- src/tests/stub_MemObject.cc | 1 - src/tests/testSBuf.cc | 1 + 10 files changed, 15 insertions(+), 28 deletions(-) diff --git a/src/MemObject.cc b/src/MemObject.cc index aeb265cafc..3b95d034eb 100644 --- a/src/MemObject.cc +++ b/src/MemObject.cc @@ -13,7 +13,6 @@ #include "Generic.h" #include "globals.h" #include "HttpReply.h" -#include "HttpRequest.h" #include "MemBuf.h" #include "MemObject.h" #include "profiler/Profiler.h" @@ -142,17 +141,9 @@ MemObject::~MemObject() HTTPMSGUNLOCK(_reply); - HTTPMSGUNLOCK(request); - ctx_exit(ctx); /* must exit before we free mem->url */ } -void -MemObject::unlinkRequest() -{ - HTTPMSGUNLOCK(request); -} - void MemObject::write(const StoreIOBuffer &writeBuffer) { diff --git a/src/MemObject.h b/src/MemObject.h index 4f958e8c74..61206aeb88 100644 --- a/src/MemObject.h +++ b/src/MemObject.h @@ -13,7 +13,6 @@ #include "dlink.h" #include "http/RequestMethod.h" #include "RemovalPolicy.h" -#include "sbuf/SBuf.h" #include "SquidString.h" #include "stmem.h" #include "StoreIOBuffer.h" @@ -28,8 +27,6 @@ typedef void STMCB (void *data, StoreIOBuffer wroteBuffer); typedef void STABH(void *); class store_client; -class HttpRequest; -class HttpReply; class MemObject { @@ -49,7 +46,7 @@ public: bool hasUris() const; void write(const StoreIOBuffer &buf); - void unlinkRequest(); + void unlinkRequest() { request = nullptr; } HttpReply const *getReply() const; void replaceHttpReply(HttpReply *newrep); void stat (MemBuf * mb) const; @@ -152,7 +149,7 @@ public: /* Read only - this reply must be preserved by store clients */ /* The original reply. possibly with updated metadata. */ - HttpRequest *request; + HttpRequestPointer request; struct timeval start_ping; IRCB *ping_reply_callback; diff --git a/src/http.cc b/src/http.cc index 5f31f9afe4..dd7233b7c5 100644 --- a/src/http.cc +++ b/src/http.cc @@ -172,7 +172,7 @@ static StoreEntry * findPreviouslyCachedEntry(StoreEntry *newEntry) { assert(newEntry->mem_obj); return newEntry->mem_obj->request ? - storeGetPublicByRequest(newEntry->mem_obj->request) : + storeGetPublicByRequest(newEntry->mem_obj->request.getRaw()) : storeGetPublic(newEntry->mem_obj->storeId(), newEntry->mem_obj->method); } @@ -254,7 +254,7 @@ httpMaybeRemovePublic(StoreEntry * e, Http::StatusCode status) if (pe != NULL) { assert(e != pe); #if USE_HTCP - neighborsHtcpClear(e, NULL, e->mem_obj->request, e->mem_obj->method, HTCP_CLR_INVALIDATION); + neighborsHtcpClear(e, nullptr, e->mem_obj->request.getRaw(), e->mem_obj->method, HTCP_CLR_INVALIDATION); #endif pe->release(); } @@ -264,14 +264,14 @@ httpMaybeRemovePublic(StoreEntry * e, Http::StatusCode status) * changed. */ if (e->mem_obj->request) - pe = storeGetPublicByRequestMethod(e->mem_obj->request, Http::METHOD_HEAD); + pe = storeGetPublicByRequestMethod(e->mem_obj->request.getRaw(), Http::METHOD_HEAD); else pe = storeGetPublic(e->mem_obj->storeId(), Http::METHOD_HEAD); if (pe != NULL) { assert(e != pe); #if USE_HTCP - neighborsHtcpClear(e, NULL, e->mem_obj->request, HttpRequestMethod(Http::METHOD_HEAD), HTCP_CLR_INVALIDATION); + neighborsHtcpClear(e, nullptr, e->mem_obj->request.getRaw(), HttpRequestMethod(Http::METHOD_HEAD), HTCP_CLR_INVALIDATION); #endif pe->release(); } diff --git a/src/neighbors.cc b/src/neighbors.cc index 7d1e2ceb13..905b12b3ea 100644 --- a/src/neighbors.cc +++ b/src/neighbors.cc @@ -960,7 +960,7 @@ ignoreMulticastReply(CachePeer * p, MemObject * mem) if (!p->options.mcast_responder) return 0; - if (peerHTTPOkay(p, mem->request)) + if (peerHTTPOkay(p, mem->request.getRaw())) return 0; return 1; @@ -1404,7 +1404,7 @@ peerCountMcastPeersDone(void *data) cbdataReferenceDone(psstate->callback_data); fake->abort(); // sets ENTRY_ABORTED and initiates releated cleanup - HTTPMSGUNLOCK(fake->mem_obj->request); + fake->mem_obj->request = nullptr; fake->unlock("peerCountMcastPeersDone"); delete psstate; } diff --git a/src/refresh.cc b/src/refresh.cc index fb28eca4cf..67130b4e4b 100644 --- a/src/refresh.cc +++ b/src/refresh.cc @@ -621,7 +621,7 @@ int refreshCheckDigest(const StoreEntry * entry, time_t delta) { int reason = refreshCheck(entry, - entry->mem_obj ? entry->mem_obj->request : NULL, + entry->mem_obj ? entry->mem_obj->request.getRaw() : nullptr, delta); ++ refreshCounts[rcCDigest].total; ++ refreshCounts[rcCDigest].status[reason]; diff --git a/src/stmem.cc b/src/stmem.cc index a7ec4bc6e5..157f0dde51 100644 --- a/src/stmem.cc +++ b/src/stmem.cc @@ -10,6 +10,7 @@ #include "squid.h" #include "Generic.h" +#include "HttpRequest.h" #include "mem_node.h" #include "MemObject.h" #include "profiler/Profiler.h" diff --git a/src/store.cc b/src/store.cc index 7f4b1140b3..fd91e44759 100644 --- a/src/store.cc +++ b/src/store.cc @@ -694,7 +694,7 @@ const cache_key * StoreEntry::calcPublicKey(const KeyScope keyScope) { assert(mem_obj); - return mem_obj->request ? storeKeyPublicByRequest(mem_obj->request, keyScope) : + return mem_obj->request ? storeKeyPublicByRequest(mem_obj->request.getRaw(), keyScope) : storeKeyPublic(mem_obj->storeId(), mem_obj->method, keyScope); } @@ -709,7 +709,7 @@ StoreEntry::adjustVary() if (!mem_obj->request) return; - HttpRequest *request = mem_obj->request; + HttpRequestPointer request(mem_obj->request); if (mem_obj->vary_headers.isEmpty()) { /* First handle the case where the object no longer varies */ @@ -726,7 +726,7 @@ StoreEntry::adjustVary() /* Make sure the request knows the variance status */ if (request->vary_headers.isEmpty()) - request->vary_headers = httpMakeVaryMark(request, mem_obj->getReply()); + request->vary_headers = httpMakeVaryMark(request.getRaw(), mem_obj->getReply()); } // TODO: storeGetPublic() calls below may create unlocked entries. diff --git a/src/store_key_md5.h b/src/store_key_md5.h index 2956961f83..5fabc68611 100644 --- a/src/store_key_md5.h +++ b/src/store_key_md5.h @@ -12,11 +12,9 @@ #define SQUID_STORE_KEY_MD5_H_ #include "hash.h" +#include "http/forward.h" #include "store/forward.h" -class HttpRequestMethod; -class HttpRequest; - typedef enum { ksDefault = 0, ksRevalidation diff --git a/src/tests/stub_MemObject.cc b/src/tests/stub_MemObject.cc index 8efbfb7ba2..88e8246e4c 100644 --- a/src/tests/stub_MemObject.cc +++ b/src/tests/stub_MemObject.cc @@ -62,7 +62,6 @@ int MemObject::mostBytesWanted(int max, bool ignoreDelayPools) const STUB_RETVAL #if USE_DELAY_POOLS DelayId MemObject::mostBytesAllowed() const STUB_RETVAL(DelayId()) #endif -void MemObject::unlinkRequest() STUB void MemObject::write(const StoreIOBuffer &writeBuffer) STUB void MemObject::replaceHttpReply(HttpReply *newrep) STUB int64_t MemObject::lowestMemReaderOffset() const STUB_RETVAL(0) diff --git a/src/tests/testSBuf.cc b/src/tests/testSBuf.cc index a91467039d..d4c03fb8bb 100644 --- a/src/tests/testSBuf.cc +++ b/src/tests/testSBuf.cc @@ -8,6 +8,7 @@ #include "squid.h" #include "base/CharacterSet.h" +#include "HttpRequest.h" #include "sbuf/Algorithms.h" #include "sbuf/SBuf.h" #include "sbuf/Stream.h" -- 2.47.3