]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Author: Alex Rousskov <rousskov@measurement-factory.com>
authorAmos Jeffries <squid3@treenet.co.nz>
Sat, 27 Sep 2008 10:06:05 +0000 (22:06 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Sat, 27 Sep 2008 10:06:05 +0000 (22:06 +1200)
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
src/fqdncache.cc
src/protos.h
src/tunnel.cc

index b482b01ba8b89912599d306100f2a129c81b08ae..b8b08b1d7cbe505ee70ae3952c15aa083394e17e 100644 (file)
@@ -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);
 
index adcf02eb4e6f9cc5edbe7511519822b905d34673..dd27bf9bf909a67ceb9591128ef8bcfa8fd9062d 100644 (file)
@@ -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";
+}
index 6fc88782d48a921a8f8e81597c80012e70de4d36..71b0a92ee70fa210623689fdf31c401e94b5491b 100644 (file)
@@ -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);
index 741585d3657f22968521b2a72142e271115eddfd..0ef502ffc27cc425921dcc1b4ea05eea1bcf986d 100644 (file)
@@ -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);