--------------------- PatchSet 4343 Date: 2007/04/23 20:06:32 Author: rousskov Branch: squid3-icap Tag: (none) Log: A failed ICAP RESPMOD transaction could leave the HTTP transaction stuck. After detecting an ICAP error and calling fwd->fail(), the HTTP Server now calls abortTransaction() (and, hence, comm_close) instead of calling closeServer() (and, hence, fwd->unregister). Server::closeServer() is a virtual method that should not be called outside of Server::serverComplete(). It would be nice to enforce that somehow. Perhaps we should at least rename closeServer? Members: src/Server.cc:1.4.2.7->1.4.2.8 Index: squid3/src/Server.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/Server.cc,v retrieving revision 1.4.2.7 retrieving revision 1.4.2.8 diff -u -r1.4.2.7 -r1.4.2.8 --- squid3/src/Server.cc 23 Apr 2007 16:23:45 -0000 1.4.2.7 +++ squid3/src/Server.cc 23 Apr 2007 20:06:32 -0000 1.4.2.8 @@ -1,5 +1,5 @@ /* - * $Id: Server.cc,v 1.4.2.7 2007/04/23 16:23:45 rousskov Exp $ + * $Id: Server.cc,v 1.4.2.8 2007/04/23 20:06:32 rousskov Exp $ * * DEBUG: * AUTHOR: Duane Wessels @@ -475,11 +475,7 @@ fwd->dontRetry(true); } - debugs(11,5, HERE << "bailing after ICAP failure"); - - cleanIcap(); - closeServer(); - quitIfAllDone(); + abortTransaction("ICAP failure"); } #endif