From 8ce6ada040361c912a9474c5cc21f2359bf0cdcb Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Sat, 27 Sep 2008 22:06:05 +1200 Subject: [PATCH] Author: Alex Rousskov 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. --- src/forward.cc | 2 +- src/fqdncache.cc | 11 +++++++++++ src/protos.h | 2 ++ src/tunnel.cc | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/forward.cc b/src/forward.cc index b482b01ba8..b8b08b1d7c 100644 --- a/src/forward.cc +++ b/src/forward.cc @@ -697,7 +697,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 adcf02eb4e..dd27bf9bf9 100644 --- a/src/fqdncache.cc +++ b/src/fqdncache.cc @@ -823,3 +823,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 6fc88782d4..71b0a92ee7 100644 --- a/src/protos.h +++ b/src/protos.h @@ -135,6 +135,8 @@ SQUIDCEXTERN void dnsShutdown(void); SQUIDCEXTERN void dnsInit(void); extern void dnsRegisterWithCacheManager(CacheManager & manager); 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 741585d365..0ef502ffc2 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); -- 2.47.2