--------------------- PatchSet 4754 Date: 2007/06/19 05:18:21 Author: rousskov Branch: squid3-icap Tag: (none) Log: Partial bug #1973 fix: Try to revive a suspended service after the icap_service_revival_delay. When a service gets suspended, schedule an OPTIONS update after the icap_service_revival_delay. If there is already an OPTIONS fetch scheduled, that outdated event will be deleted using eventDelete(). Eventually, we may want to have a separate option to control suspended service revival. Members: src/ICAP/ICAPServiceRep.cc:1.1.2.20->1.1.2.21 Index: squid3/src/ICAP/ICAPServiceRep.cc =================================================================== RCS file: /cvsroot/squid-sf//squid3/src/ICAP/ICAPServiceRep.cc,v retrieving revision 1.1.2.20 retrieving revision 1.1.2.21 diff -u -r1.1.2.20 -r1.1.2.21 --- squid3/src/ICAP/ICAPServiceRep.cc 19 Jun 2007 05:09:03 -0000 1.1.2.20 +++ squid3/src/ICAP/ICAPServiceRep.cc 19 Jun 2007 05:18:21 -0000 1.1.2.21 @@ -178,6 +178,9 @@ debugs(93,4, theSessionFailures << "ICAP service failures, out of " << TheICAPConfig.service_failure_limit << " allowed " << status()); + if (isSuspended) + return; + if (TheICAPConfig.service_failure_limit >= 0 && theSessionFailures > TheICAPConfig.service_failure_limit) suspend("too many failures"); @@ -194,6 +197,7 @@ } else { isSuspended = reason; debugs(93,1, "suspending ICAPService for " << reason); + scheduleUpdate(squid_curtime + TheICAPConfig.service_revival_delay); announceStatusChange("suspended", true); } }