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);
}
#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";
+}
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);
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);