From: Alex Rousskov Date: Tue, 23 Sep 2008 16:16:28 +0000 (-0600) Subject: Bug #2459 workaround: When dns_error_message value is lost, use "lost DNS X-Git-Tag: SQUID_3_1_0_1~49^2~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de48c85e940d1be294d1ed2a6da5e8849b744b6a;p=thirdparty%2Fsquid.git Bug #2459 workaround: When dns_error_message value is lost, use "lost DNS error" text and log at level 1 to inform the administrator about the internal error. This temporary hack does not fix the incorrect DNS error value problem, only the lost one. --- diff --git a/src/forward.cc b/src/forward.cc index fd923aba65..91da4cbbaf 100644 --- a/src/forward.cc +++ b/src/forward.cc @@ -699,7 +699,7 @@ FwdState::connectDone(int aServerFD, comm_err_t status, int xerrno) ErrorState *anErr = errorCon(ERR_DNS_FAIL, HTTP_SERVICE_UNAVAILABLE, request); - anErr->dnsserver_msg = xstrdup(dns_error_message); + anErr->dnsserver_msg = xstrdup(dns_error_message_safe()); fail(anErr); diff --git a/src/fqdncache.cc b/src/fqdncache.cc index c3584e55a3..70b1f95ff8 100644 --- a/src/fqdncache.cc +++ b/src/fqdncache.cc @@ -941,3 +941,14 @@ snmp_netFqdnFn(variable_list * Var, snint * ErrP) } #endif /*SQUID_SNMP */ + +/// XXX: a hack to work around the missing DNS error info +// see http://www.squid-cache.org/bugs/show_bug.cgi?id=2459 +const char * +dns_error_message_safe() +{ + if (dns_error_message) + return dns_error_message; + debugs(35,DBG_IMPORTANT, "Internal error: lost DNS error info"); + return "lost DNS error"; +} diff --git a/src/protos.h b/src/protos.h index bcefa9fc9f..cf9579a803 100644 --- a/src/protos.h +++ b/src/protos.h @@ -134,6 +134,8 @@ SQUIDCEXTERN void disk_init(void); SQUIDCEXTERN void dnsShutdown(void); SQUIDCEXTERN void dnsInit(void); SQUIDCEXTERN void dnsSubmit(const char *lookup, HLPCB * callback, void *data); +/// XXX: a temporary hack to work around the missing DNS error info +const char *dns_error_message_safe(); /* dns_internal.c */ SQUIDCEXTERN void idnsInit(void); diff --git a/src/tunnel.cc b/src/tunnel.cc index e619af8ef1..0722fa584b 100644 --- a/src/tunnel.cc +++ b/src/tunnel.cc @@ -568,7 +568,7 @@ tunnelConnectDone(int fdnotused, comm_err_t status, int xerrno, void *data) debugs(26, 4, "tunnelConnect: Unknown host: " << tunnelState->host); err = errorCon(ERR_DNS_FAIL, HTTP_NOT_FOUND, request); *tunnelState->status_ptr = HTTP_NOT_FOUND; - err->dnsserver_msg = xstrdup(dns_error_message); + err->dnsserver_msg = xstrdup(dns_error_message_safe()); err->callback = tunnelErrorComplete; err->callback_data = tunnelState; errorSend(tunnelState->client.fd(), err);