dns_server: fix SERVERFAIL when A is 127.0.0.1
This commit is contained in:
@@ -2322,6 +2322,7 @@ static int _dns_server_process_answer_A(struct dns_rrs *rrs, struct dns_request
|
|||||||
if (addr[0] == 0 || addr[0] == 127) {
|
if (addr[0] == 0 || addr[0] == 127) {
|
||||||
/* If half of the servers return the same result, then ignore this address */
|
/* If half of the servers return the same result, then ignore this address */
|
||||||
if (atomic_inc_return(&request->adblock) <= (dns_server_num() / 2 + dns_server_num() % 2)) {
|
if (atomic_inc_return(&request->adblock) <= (dns_server_num() / 2 + dns_server_num() % 2)) {
|
||||||
|
request->rcode = DNS_RC_NOERROR;
|
||||||
_dns_server_request_release(request);
|
_dns_server_request_release(request);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -2398,6 +2399,7 @@ static int _dns_server_process_answer_AAAA(struct dns_rrs *rrs, struct dns_reque
|
|||||||
if (_dns_server_is_adblock_ipv6(addr) == 0) {
|
if (_dns_server_is_adblock_ipv6(addr) == 0) {
|
||||||
/* If half of the servers return the same result, then ignore this address */
|
/* If half of the servers return the same result, then ignore this address */
|
||||||
if (atomic_inc_return(&request->adblock) <= (dns_server_num() / 2 + dns_server_num() % 2)) {
|
if (atomic_inc_return(&request->adblock) <= (dns_server_num() / 2 + dns_server_num() % 2)) {
|
||||||
|
request->rcode = DNS_RC_NOERROR;
|
||||||
_dns_server_request_release(request);
|
_dns_server_request_release(request);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user