--------------------- PatchSet 1947 Date: 2005/10/11 22:28:12 Author: rousskov Branch: squid3-icap Tag: (none) Log: - echoMore() was not called in noteSourceFinish(), causing memory leaks if the transaction was stuck waiting to send the last chunk. - Stop if the virgin source aborts. Members: src/ICAPXaction.cc:1.1.2.49->1.1.2.50 Index: squid3/src/ICAPXaction.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/Attic/ICAPXaction.cc,v retrieving revision 1.1.2.49 retrieving revision 1.1.2.50 diff -u -r1.1.2.49 -r1.1.2.50 --- squid3/src/ICAPXaction.cc 11 Oct 2005 22:00:20 -0000 1.1.2.49 +++ squid3/src/ICAPXaction.cc 11 Oct 2005 22:28:12 -0000 1.1.2.50 @@ -934,7 +934,12 @@ Must(!state.doneReceiving); state.doneReceiving = true; - writeMore(); // in case we were waiting to write the last-chunk + + // push writer and sender in case we were waiting for the last-chunk + writeMore(); + + if (state.sending == State::sendingVirgin) + echoMore(); ICAPXaction_Exit(noteSourceFinish); } @@ -946,6 +951,7 @@ Must(!state.doneReceiving); state.doneReceiving = true; + mustStop(notifyService); ICAPXaction_Exit(noteSourceAbort); }