I just received a request for the patch mentioned in this thread so I'm just
going to paste it here for all future users since it doesn't appear there
has been a new release which includes this.
Tell the host application when we no longer need virgin body
so that the host application can get rid of allocated resources and
possibly terminate the transaction.
Index: src/adapter_modifying.cc
===================================================================
--- src/adapter_modifying.cc (revision 12841)
+++ src/adapter_modifying.cc (working copy)
@@ -290,21 +290,21 @@
}
void Adapter::Xaction::abContentShift(size_type size) {
Must(sendingAb == opOn || sendingAb == opComplete);
buffer.erase(0, size);
}
void Adapter::Xaction::noteVbContentDone(bool atEnd)
{
Must(receivingVb == opOn);
- receivingVb = opComplete;
+ stopVb();
if (sendingAb == opOn) {
hostx->noteAbContentDone(atEnd);
sendingAb = opComplete;
}
}
void Adapter::Xaction::noteVbContentAvailable()
{
Must(receivingVb == opOn);
@@ -333,21 +333,21 @@
}
bool Adapter::Xaction::callable() const {
return hostx != 0; // no point to call us if we are done
}
// tells the host that we are not interested in [more] vb
// if the host does not know that already
void Adapter::Xaction::stopVb() {
if (receivingVb == opOn) {
- hostx->vbStopMaking();
+ hostx->vbStopMaking(); // we will not call vbContent() any more
receivingVb = opComplete;
} else {
// we already got the entire body or refused it earlier
Must(receivingVb != opUndecided);
}
}
// this method is used to make the last call to hostx transaction
// last call may delete adapter transaction if the host no longer needs it
// TODO: replace with hostx-independent "done" method
Index: src/adapter_passthru.cc
===================================================================
--- src/adapter_passthru.cc (revision 12840)
+++ src/adapter_passthru.cc (working copy)
@@ -207,20 +207,21 @@
void Adapter::Xaction::abContentShift(size_type size)
{
Must(sendingAb == opOn);
hostx->vbContentShift(size);
}
void Adapter::Xaction::noteVbContentDone(bool atEnd)
{
Must(receivingVb == opOn);
+ hostx->vbStopMaking(); // we will not call vbContent() any more
receivingVb = opComplete;
hostx->noteAbContentDone(atEnd);
}
void Adapter::Xaction::noteVbContentAvailable()
{
Must(receivingVb == opOn);
if (sendingAb == opOn)
hostx->noteAbContentAvailable();
}
-- View this message in context: http://squid-web-proxy-cache.1019090.n4.nabble.com/memory-leak-associated-w-running-any-ecap-adapter-tp4657812p4665986.html Sent from the Squid - Development mailing list archive at Nabble.com.Received on Fri May 16 2014 - 18:49:56 MDT
This archive was generated by hypermail 2.2.0 : Mon May 19 2014 - 12:00:13 MDT