resolved: check OPT RR before accepting a reply for verification of server feature level
Let's make sure we first check if the OPT was lost in the reply, before we accept a reply as successful and use it for verifying the current feature level.
This commit is contained in:
parent
c5b4f86178
commit
ed9717fcbf
|
@ -683,8 +683,6 @@ void dns_transaction_process_reply(DnsTransaction *t, DnsPacket *p) {
|
||||||
return;
|
return;
|
||||||
} else if (DNS_PACKET_TC(p))
|
} else if (DNS_PACKET_TC(p))
|
||||||
dns_server_packet_truncated(t->server, t->current_feature_level);
|
dns_server_packet_truncated(t->server, t->current_feature_level);
|
||||||
else
|
|
||||||
dns_server_packet_received(t->server, p->ipproto, t->current_feature_level, ts - t->start_usec, p->size);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -742,8 +740,12 @@ void dns_transaction_process_reply(DnsTransaction *t, DnsPacket *p) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Report that the OPT RR was missing */
|
/* Report that the OPT RR was missing */
|
||||||
if (t->server && !p->opt)
|
if (t->server) {
|
||||||
dns_server_packet_bad_opt(t->server, t->current_feature_level);
|
if (!p->opt)
|
||||||
|
dns_server_packet_bad_opt(t->server, t->current_feature_level);
|
||||||
|
|
||||||
|
dns_server_packet_received(t->server, p->ipproto, t->current_feature_level, ts - t->start_usec, p->size);
|
||||||
|
}
|
||||||
|
|
||||||
if (IN_SET(t->scope->protocol, DNS_PROTOCOL_DNS, DNS_PROTOCOL_LLMNR)) {
|
if (IN_SET(t->scope->protocol, DNS_PROTOCOL_DNS, DNS_PROTOCOL_LLMNR)) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue