]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Replace ConnStateData::freeAllContexts() with Pipeline::terminateAll(0)
authorAmos Jeffries <squid3@treenet.co.nz>
Sun, 15 Nov 2015 11:08:29 +0000 (03:08 -0800)
committerAmos Jeffries <squid3@treenet.co.nz>
Sun, 15 Nov 2015 11:08:29 +0000 (03:08 -0800)
src/client_side.cc
src/client_side.h
src/tests/stub_client_side.cc

index d15c23d8c1157a40ec7f9a28f9da1de123d2f2b3..b8b436467801c0452592adb23a9637eee6c022bf 100644 (file)
@@ -658,19 +658,6 @@ httpRequestFree(void *data)
     delete http;
 }
 
-void
-ConnStateData::freeAllContexts()
-{
-    ClientSocketContext::Pointer context;
-
-    while ((context = getCurrentContext()).getRaw() != NULL) {
-        assert(getCurrentContext() !=
-               getCurrentContext()->next);
-        context->connIsFinished();
-        assert (context != currentobject);
-    }
-}
-
 /// propagates abort event to all contexts
 void
 ConnStateData::notifyAllContexts(int xerrno)
@@ -775,7 +762,7 @@ ConnStateData::swanSong()
     flags.readMore = false;
     DeregisterRunner(this);
     clientdbEstablished(clientConnection->remote, -1);  /* decrement */
-    freeAllContexts();
+    pipeline.terminateAll(0);
 
     unpinConnection(true);
 
@@ -3783,8 +3770,10 @@ void ConnStateData::buildSslCertGenerationParams(Ssl::CertificateProperties &cer
 void
 ConnStateData::getSslContextStart()
 {
-    freeAllContexts();
-    /* careful: freeAllContexts() above frees request, host, etc. */
+    // XXX starting SSL with a pipeline of requests still waiting for non-SSL replies?
+    assert(pipeline.count() < 2); // the CONNECT is okay for now. Anything else is a bug.
+    pipeline.terminateAll(0);
+    /* careful: terminateAll(0) above frees request, host, etc. */
 
     if (port->generateHostCertificates) {
         Ssl::CertificateProperties certProperties;
index 388fa52ebeeb7f5a77a5d0f4d08e27f0e5eac100..3b1914f2ae3905533ebb021072bc866a542eb4bc 100644 (file)
@@ -182,7 +182,6 @@ public:
     virtual bool handleReadData();
     virtual void afterClientRead();
 
-    void freeAllContexts();
     /// Traffic parsing
     bool clientParseRequests();
     void readNextRequest();
index ecd31fa4ecd64fa57773527411df75abd6e1f0f5..75383c51e573c965adcbbde6b8fccc3bbded68be 100644 (file)
@@ -36,7 +36,6 @@ void ClientSocketContext::registerWithConn() STUB
 void ClientSocketContext::noteIoError(const int xerrno) STUB
 void ClientSocketContext::writeControlMsg(HttpControlMsg &msg) STUB
 
-void ConnStateData::freeAllContexts() STUB
 void ConnStateData::notifyAllContexts(const int xerrno) STUB
 bool ConnStateData::clientParseRequests() STUB_RETVAL(false)
 void ConnStateData::readNextRequest() STUB