--------------------- PatchSet 6859 Date: 2008/02/16 21:06:42 Author: chtsanti Branch: async-calls Tag: (none) Log: It is realy bad idea to reset the AsyncCall_Handling_Exceptions in xassert function. The xassert is not the only place which throws an exception and there are cases (exceptions in ICAP/* code) in which the AsyncCall_Handling_Exceptions remains unreset. This patch calls the WontCatchException function which also resets the AsyncCall_Handling_Exceptions variable in the same place the exception handled in JobDialer::dial method Members: src/debug.cc:1.18.4.3->1.18.4.4 src/ICAP/AsyncJob.cc:1.3.4.13->1.3.4.14 Index: squid3/src/debug.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/debug.cc,v retrieving revision 1.18.4.3 retrieving revision 1.18.4.4 diff -u -r1.18.4.3 -r1.18.4.4 --- squid3/src/debug.cc 14 Feb 2008 21:46:38 -0000 1.18.4.3 +++ squid3/src/debug.cc 16 Feb 2008 21:06:42 -0000 1.18.4.4 @@ -1,5 +1,5 @@ /* - * $Id: debug.cc,v 1.18.4.3 2008/02/14 21:46:38 chtsanti Exp $ + * $Id: debug.cc,v 1.18.4.4 2008/02/16 21:06:42 chtsanti Exp $ * * DEBUG: section 0 Debug Routines * AUTHOR: Harvest Derived @@ -595,8 +595,6 @@ TheSalvagedAsserts++; debugs(0, 0, "assertion failed: " << file << ":" << line << ": \"" << msg << "\". Trying to survive. Salvaged assertions: " << TheSalvagedAsserts); - AsyncCall_Handling_Exceptions = false; - throw TextException(msg, file, line); } Index: squid3/src/ICAP/AsyncJob.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/ICAP/AsyncJob.cc,v retrieving revision 1.3.4.13 retrieving revision 1.3.4.14 diff -u -r1.3.4.13 -r1.3.4.14 --- squid3/src/ICAP/AsyncJob.cc 14 Feb 2008 21:46:39 -0000 1.3.4.13 +++ squid3/src/ICAP/AsyncJob.cc 16 Feb 2008 21:06:42 -0000 1.3.4.14 @@ -209,6 +209,7 @@ debugs(call.debugSection, 3, HERE << call.name << " threw exception: " << e.message); job->callException(e); + WontCatchException(); } job->callEnd(); // may delete job