From: hno <> Date: Wed, 10 Jan 2001 04:06:43 +0000 (+0000) Subject: Made overloaded dnsserver queues a soft error unless the queue is X-Git-Tag: SQUID_3_0_PRE1~1664 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fe1bda4b3bc1836b8b305eaed26456fa26978d48;p=thirdparty%2Fsquid.git Made overloaded dnsserver queues a soft error unless the queue is completely stuck (3 minutes). This to handle internet-breakdowns more gracefully when not using the internal DNS client. --- diff --git a/src/dns.cc b/src/dns.cc index 57bb4b630f..ce0476596c 100644 --- a/src/dns.cc +++ b/src/dns.cc @@ -1,6 +1,6 @@ /* - * $Id: dns.cc,v 1.83 2000/05/31 08:57:08 hno Exp $ + * $Id: dns.cc,v 1.84 2001/01/09 21:06:43 hno Exp $ * * DEBUG: section 34 Dnsserver interface * AUTHOR: Harvest Derived @@ -89,7 +89,17 @@ void dnsSubmit(const char *lookup, HLPCB * callback, void *data) { char buf[256]; + static time_t first_warn = 0; snprintf(buf, 256, "%s\n", lookup); + if (dnsservers->stats.queue_size >= dnsservers->n_running * 2) { + if (first_warn == 0) + first_warn = squid_curtime; + if (squid_curtime - first_warn > 3*60) + fatal("DNS servers not responding for 3 minutes"); + debug(34, 1) ("dnsSubmit: queue overload, rejecting %s\n", lookup); + callback(data, "$fail temporary network problem, pleas retry later"); + } + first_warn = 0; helperSubmit(dnsservers, buf, callback, data); }