mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 12:40:00 -04:00
4193. [bug] Handle broken servers that return BADVERS incorrectly.
[RT #40427]
This commit is contained in:
parent
7d0a5cd8c9
commit
6c09fd0e6b
2 changed files with 8 additions and 30 deletions
3
CHANGES
3
CHANGES
|
|
@ -1,3 +1,6 @@
|
|||
4193. [bug] Handle broken servers that return BADVERS incorrectly.
|
||||
[RT #40427]
|
||||
|
||||
4192. [bug] The default rrset-order of random was not always being
|
||||
applied. [RT #40456]
|
||||
|
||||
|
|
|
|||
|
|
@ -7636,38 +7636,13 @@ resquery_response(isc_task_t *task, isc_event_t *event) {
|
|||
*/
|
||||
result = DNS_R_YXDOMAIN;
|
||||
} else if (message->rcode == dns_rcode_badvers) {
|
||||
unsigned int flags, mask;
|
||||
unsigned int version;
|
||||
|
||||
resend = ISC_TRUE;
|
||||
INSIST(opt != NULL);
|
||||
version = (opt->ttl >> 16) & 0xff;
|
||||
flags = (version << DNS_FETCHOPT_EDNSVERSIONSHIFT) |
|
||||
DNS_FETCHOPT_EDNSVERSIONSET;
|
||||
mask = DNS_FETCHOPT_EDNSVERSIONMASK |
|
||||
DNS_FETCHOPT_EDNSVERSIONSET;
|
||||
/*
|
||||
* Record that we got a good EDNS response.
|
||||
* This should be impossible as we only send EDNS
|
||||
* version 0 requests and to return BADVERS you
|
||||
* need to support EDNS as it is a extended rcode.
|
||||
*/
|
||||
if (query->ednsversion > (int)version &&
|
||||
!EDNSOK(query->addrinfo)) {
|
||||
dns_adb_changeflags(fctx->adb, query->addrinfo,
|
||||
FCTX_ADDRINFO_EDNSOK,
|
||||
FCTX_ADDRINFO_EDNSOK);
|
||||
}
|
||||
/*
|
||||
* Record the supported EDNS version.
|
||||
*/
|
||||
switch (version) {
|
||||
case 0:
|
||||
dns_adb_changeflags(fctx->adb, query->addrinfo,
|
||||
flags, mask);
|
||||
break;
|
||||
default:
|
||||
broken_server = DNS_R_BADVERS;
|
||||
keep_trying = ISC_TRUE;
|
||||
break;
|
||||
}
|
||||
broken_server = DNS_R_BADVERS;
|
||||
keep_trying = ISC_TRUE;
|
||||
} else {
|
||||
/*
|
||||
* XXXRTH log.
|
||||
|
|
|
|||
Loading…
Reference in a new issue