]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Cleanup: convert MemObject::request to Pointer
authorAmos Jeffries <squid3@treenet.co.nz>
Sun, 26 Feb 2017 10:24:15 +0000 (23:24 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Sun, 26 Feb 2017 10:24:15 +0000 (23:24 +1300)
src/MemObject.cc
src/MemObject.h
src/http.cc
src/neighbors.cc
src/refresh.cc
src/stmem.cc
src/store.cc
src/store_key_md5.h
src/tests/stub_MemObject.cc
src/tests/testSBuf.cc

index aeb265cafc8b688a63007353bdc157bcfc06f79e..3b95d034ebd354af3873646027daffe807352d7d 100644 (file)
@@ -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)
 {
index 4f958e8c749097317ff0d094c2e77b21b8d9496c..61206aeb885fdf6e94b813cc73a5831952c63154 100644 (file)
@@ -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;
index 5f31f9afe4f60d8961d648daa628b6d52be12146..dd7233b7c580fca2542706bd7db20b5ec4533fe6 100644 (file)
@@ -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();
     }
index 7d1e2ceb13493674660933e720013258b606dca3..905b12b3ea7864db9016eb8b589f53cd6b6f405c 100644 (file)
@@ -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;
 }
index fb28eca4cff8b227f45964f5a423ad642bf2f34f..67130b4e4b87e64e5279dbd1c45e1c0fe22fa61a 100644 (file)
@@ -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];
index a7ec4bc6e55906ed8914d86979b5734cc1b078f1..157f0dde516ef1cbed3d345758e1f44e20fddf71 100644 (file)
@@ -10,6 +10,7 @@
 
 #include "squid.h"
 #include "Generic.h"
+#include "HttpRequest.h"
 #include "mem_node.h"
 #include "MemObject.h"
 #include "profiler/Profiler.h"
index 7f4b1140b3cbbceacf12322de87324e0b775238e..fd91e447599d621895cbb45cb4b727c75adfc0db 100644 (file)
@@ -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.
index 2956961f8399539ce5cde64b04d1ca6812869550..5fabc686111306a2ddb3f8b2e02a3f335de07a19 100644 (file)
 #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
index 8efbfb7ba2fc99e1716c1e6f04ac563b42dc72e8..88e8246e4cbecc6cc7f73ad35f93ab169e5116ba 100644 (file)
@@ -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)
index a91467039d889fb88db22c4c6c05c48d7a64b032..d4c03fb8bb7b559f571d6c1fcd523a1a4e87c445 100644 (file)
@@ -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"