qctx->line = __LINE__; \
} while (0)
-#define RECURSE_ERROR(qctx, r) \
-do { \
- if ((r) == DNS_R_DUPLICATE || (r) == DNS_R_DROP) \
- QUERY_ERROR(qctx, r); \
- else \
- QUERY_ERROR(qctx, DNS_R_SERVFAIL); \
-} while (0)
-
/*% Partial answer? */
#define PARTIALANSWER(c) (((c)->query.attributes & \
NS_QUERYATTR_PARTIALANSWER) != 0)
query_error(ns_client_t *client, isc_result_t result, int line) {
int loglevel = ISC_LOG_DEBUG(3);
- switch (result) {
- case DNS_R_SERVFAIL:
+ switch (dns_result_torcode(result)) {
+ case dns_rcode_servfail:
loglevel = ISC_LOG_DEBUG(1);
inc_stats(client, ns_statscounter_servfail);
break;
- case DNS_R_FORMERR:
+ case dns_rcode_formerr:
inc_stats(client, ns_statscounter_formerr);
break;
default:
} else {
CCTRACE(ISC_LOG_ERROR,
"ns__query_start: query_getdb failed");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, result);
}
return (query_done(qctx));
}
if (ISC_UNLIKELY(qctx->dbuf == NULL)) {
CCTRACE(ISC_LOG_ERROR,
"query_lookup: query_getnamebuf failed (2)");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, ISC_R_NOMEMORY);
return (query_done(qctx));
}
if (ISC_UNLIKELY(qctx->fname == NULL || qctx->rdataset == NULL)) {
CCTRACE(ISC_LOG_ERROR,
"query_lookup: query_newname failed (2)");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, ISC_R_NOMEMORY);
return (query_done(qctx));
}
if (qctx->sigrdataset == NULL) {
CCTRACE(ISC_LOG_ERROR,
"query_lookup: query_newrdataset failed (2)");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, ISC_R_NOMEMORY);
return (query_done(qctx));
}
}
if (qctx->dbuf == NULL) {
CCTRACE(ISC_LOG_ERROR,
"query_resume: query_getnamebuf failed (1)");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, ISC_R_NOMEMORY);
return (query_done(qctx));
}
if (qctx->fname == NULL) {
CCTRACE(ISC_LOG_ERROR,
"query_resume: query_newname failed (1)");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, ISC_R_NOMEMORY);
return (query_done(qctx));
}
if (result != ISC_R_SUCCESS) {
CCTRACE(ISC_LOG_ERROR,
"query_resume: dns_name_copy failed");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, result);
return (query_done(qctx));
}
qctx->client->query.attributes |= NS_QUERYATTR_RECURSING;
return (ISC_R_COMPLETE);
default:
- RECURSE_ERROR(qctx, rresult);
- return (ISC_R_COMPLETE);;
+ QUERY_ERROR(qctx, rresult);
+ return (ISC_R_COMPLETE);
}
if (qctx->rpz_st->m.policy != DNS_RPZ_POLICY_MISS) {
*/
return (query_lookup(qctx));
}
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, result);
return (query_done(qctx));
}
}
if (result != ISC_R_SUCCESS) {
CCTRACE(ISC_LOG_ERROR,
"query_respond_any: allrdatasets failed");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, result);
return (query_done(qctx));
}
if (result != ISC_R_NOMORE) {
CCTRACE(ISC_LOG_ERROR,
"query_respond_any: dns_rdatasetiter_destroy failed");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, result);
} else {
query_addauth(qctx);
}
qctx->client->query.attributes |=
NS_QUERYATTR_DNS64EXCLUDE;
} else {
- RECURSE_ERROR(qctx, result);
+ QUERY_ERROR(qctx, result);
}
return (query_done(qctx));
if (qctx->dns64_exclude)
qctx->client->query.attributes |=
NS_QUERYATTR_DNS64EXCLUDE;
- } else
- RECURSE_ERROR(qctx, result);
+ } else {
+ QUERY_ERROR(qctx, result);
+ }
return (query_done(qctx));
} else {
/* Unable to give root server referral. */
CCTRACE(ISC_LOG_ERROR,
"unable to give root server referral");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, result);
return (query_done(qctx));
}
}
if (qctx->dns64_exclude)
qctx->client->query.attributes |=
NS_QUERYATTR_DNS64EXCLUDE;
- } else if (result == DNS_R_DUPLICATE || result == DNS_R_DROP) {
- QUERY_ERROR(qctx, result);
} else {
- RECURSE_ERROR(qctx, result);
+ QUERY_ERROR(qctx, result);
}
return (query_done(qctx));
CCTRACE(ISC_LOG_ERROR,
"query_nodata: "
"query_getnamebuf failed (3)");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, ISC_R_NOMEMORY);
return (query_done(qctx));;
}
qctx->fname = query_newname(qctx->client,
CCTRACE(ISC_LOG_ERROR,
"query_nodata: "
"query_newname failed (3)");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, ISC_R_NOMEMORY);
return (query_done(qctx));;
}
}
"query_sign_nodata: "
"failure getting "
"closest encloser");
- QUERY_ERROR(qctx, DNS_R_SERVFAIL);
+ QUERY_ERROR(qctx, ISC_R_NOMEMORY);
return (query_done(qctx));
}
/*
qctx->client->query.attributes |=
NS_QUERYATTR_DNS64EXCLUDE;
} else {
- RECURSE_ERROR(qctx, result);
+ QUERY_ERROR(qctx, result);
}
return (query_done(qctx));