From 43e45ea7e94ecfbd33cc2dab3a4e6777d5eeb7ca Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Sun, 15 Nov 2015 03:08:29 -0800 Subject: [PATCH] Replace ConnStateData::freeAllContexts() with Pipeline::terminateAll(0) --- src/client_side.cc | 21 +++++---------------- src/client_side.h | 1 - src/tests/stub_client_side.cc | 1 - 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/src/client_side.cc b/src/client_side.cc index d15c23d8c1..b8b4364678 100644 --- a/src/client_side.cc +++ b/src/client_side.cc @@ -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; diff --git a/src/client_side.h b/src/client_side.h index 388fa52ebe..3b1914f2ae 100644 --- a/src/client_side.h +++ b/src/client_side.h @@ -182,7 +182,6 @@ public: virtual bool handleReadData(); virtual void afterClientRead(); - void freeAllContexts(); /// Traffic parsing bool clientParseRequests(); void readNextRequest(); diff --git a/src/tests/stub_client_side.cc b/src/tests/stub_client_side.cc index ecd31fa4ec..75383c51e5 100644 --- a/src/tests/stub_client_side.cc +++ b/src/tests/stub_client_side.cc @@ -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 -- 2.47.3