]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Bug #2459 workaround: When dns_error_message value is lost, use "lost DNS
authorAlex Rousskov <rousskov@measurement-factory.com>
Tue, 23 Sep 2008 16:16:28 +0000 (10:16 -0600)
committerAlex Rousskov <rousskov@measurement-factory.com>
Tue, 23 Sep 2008 16:16:28 +0000 (10:16 -0600)
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 fd923aba652943603ec6ee8f1a8022d68e26c747..91da4cbbaf65af803a575b3510da012a16988513 100644 (file)
@@ -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);
 
index c3584e55a3e6d9bceccb83b3d5c3826223eb38ac..70b1f95ff882862a8d85c23f2aaa47426eb5f82c 100644 (file)
@@ -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";
+}
index bcefa9fc9f3a17269652d8144f51df4c7475cb2c..cf9579a803ed93e9c4e799933da43a6274be7e96 100644 (file)
@@ -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);
index e619af8ef1790e703936a83154850b6fba9fa717..0722fa584b2d9ecfa3d2d0e0452869fe7040bf9d 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);