Commit 2e676167 authored by Mark Andrews's avatar Mark Andrews
Browse files

2144. [cleanup] Suppress logging of SERVFAIL from forwarders.

                        [RT #16619]
parent 4098271a
2144. [cleanup] Suppress logging of SERVFAIL from forwarders.
[RT #16619]
2143. [bug] We failed to restart the IPv6 client when the
kernel failed to return the destination the
packet was sent to. [RT #16613]
......
......@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: resolver.c,v 1.343 2007/02/14 23:40:01 marka Exp $ */
/* $Id: resolver.c,v 1.344 2007/02/26 01:07:49 marka Exp $ */
/*! \file */
......@@ -1896,7 +1896,7 @@ mark_bad(fetchctx_t *fctx) {
}
static void
add_bad(fetchctx_t *fctx, isc_sockaddr_t *address, isc_result_t reason) {
add_bad(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo, isc_result_t reason) {
char namebuf[DNS_NAME_FORMATSIZE];
char addrbuf[ISC_SOCKADDR_FORMATSIZE];
char classbuf[64];
......@@ -1905,6 +1905,7 @@ add_bad(fetchctx_t *fctx, isc_sockaddr_t *address, isc_result_t reason) {
isc_buffer_t b;
isc_sockaddr_t *sa;
const char *sep1, *sep2;
isc_sockaddr_t *address = &addrinfo->sockaddr;
if (bad_server(fctx, address)) {
/*
......@@ -1925,6 +1926,11 @@ add_bad(fetchctx_t *fctx, isc_sockaddr_t *address, isc_result_t reason) {
if (reason == DNS_R_LAME) /* already logged */
return;
if (reason == DNS_R_UNEXPECTEDRCODE &&
fctx->rmessage->opcode == dns_rcode_servfail &&
ISFORWARDER(addrinfo))
return;
if (reason == DNS_R_UNEXPECTEDRCODE) {
isc_buffer_init(&b, code, sizeof(code) - 1);
dns_rcode_totext(fctx->rmessage->rcode, &b);
......@@ -3496,7 +3502,7 @@ validated(isc_task_t *task, isc_event_t *event) {
if (result == ISC_R_SUCCESS)
dns_db_detachnode(fctx->cache, &node);
result = vevent->result;
add_bad(fctx, &addrinfo->sockaddr, result);
add_bad(fctx, addrinfo, result);
isc_event_free(&event);
UNLOCK(&fctx->res->buckets[fctx->bucketnum].lock);
if (!ISC_LIST_EMPTY(fctx->validators))
......@@ -5885,7 +5891,7 @@ resquery_response(isc_task_t *task, isc_event_t *event) {
* Add this server to the list of bad servers for
* this fctx.
*/
add_bad(fctx, &addrinfo->sockaddr, broken_server);
add_bad(fctx, addrinfo, broken_server);
}
if (get_nameservers) {
......@@ -5967,7 +5973,7 @@ resquery_response(isc_task_t *task, isc_event_t *event) {
fctx_done(fctx, result);
} else if (result == DNS_R_CHASEDSSERVERS) {
unsigned int n;
add_bad(fctx, &addrinfo->sockaddr, result);
add_bad(fctx, addrinfo, result);
fctx_cancelqueries(fctx, ISC_TRUE);
fctx_cleanupfinds(fctx);
fctx_cleanupforwaddrs(fctx);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment