2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00

3810. [bug] Work around broken nameservers that fail to ignore

unknown EDNS options. [RT #35766]
This commit is contained in:
Mark Andrews
2014-04-17 15:43:38 +10:00
parent 27963ad220
commit 469bbe0f97
2 changed files with 21 additions and 0 deletions

View File

@@ -1,3 +1,6 @@
3810. [bug] Work around broken nameservers that fail to ignore
unknown EDNS options. [RT #35766]
3809. [doc] Fix SIT and NSID documentation. 3809. [doc] Fix SIT and NSID documentation.
3808. [doc] Clean up "prefetch" documentation. [RT #35751] 3808. [doc] Clean up "prefetch" documentation. [RT #35751]

View File

@@ -7455,6 +7455,24 @@ resquery_response(isc_task_t *task, isc_event_t *event) {
*/ */
if (message->rcode != dns_rcode_noerror && if (message->rcode != dns_rcode_noerror &&
message->rcode != dns_rcode_nxdomain) { message->rcode != dns_rcode_nxdomain) {
#ifdef ISC_PLATFORM_USESIT
unsigned char sit[64];
/*
* Some servers do not ignore unknown EDNS options.
*/
if (!NOSIT(query->addrinfo) &&
(message->rcode == dns_rcode_formerr ||
message->rcode == dns_rcode_notimp ||
message->rcode == dns_rcode_refused) &&
dns_adb_getsit(fctx->adb, query->addrinfo,
sit, sizeof(sit)) == 0U) {
dns_adb_changeflags(fctx->adb, query->addrinfo,
FCTX_ADDRINFO_NOSIT,
FCTX_ADDRINFO_NOSIT);
resend = ISC_TRUE;
} else
#endif
if (((message->rcode == dns_rcode_formerr || if (((message->rcode == dns_rcode_formerr ||
message->rcode == dns_rcode_notimp) || message->rcode == dns_rcode_notimp) ||
(message->rcode == dns_rcode_servfail && (message->rcode == dns_rcode_servfail &&