mirror of
https://github.com/systemd/systemd.git
synced 2024-12-04 07:43:38 +08:00
resolve/mdns: do not append packets without records
Previously, if we have only max_rr cached entries, then an empty packet is appended. Prompted by #29168.
This commit is contained in:
parent
7f0dbde467
commit
6cfa4fc4ce
@ -1308,6 +1308,19 @@ int dns_cache_export_shared_to_packet(DnsCache *cache, DnsPacket *p, usec_t ts,
|
||||
if (usec_sub_unsigned(j->until, ts) < j->rr->ttl * USEC_PER_SEC / 2)
|
||||
continue;
|
||||
|
||||
if (max_rr > 0 && ancount >= max_rr) {
|
||||
DNS_PACKET_HEADER(p)->ancount = htobe16(ancount);
|
||||
ancount = 0;
|
||||
|
||||
r = dns_packet_new_query(&p->more, p->protocol, 0, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
p = p->more;
|
||||
|
||||
max_rr = UINT_MAX;
|
||||
}
|
||||
|
||||
r = dns_packet_append_rr(p, j->rr, 0, NULL, NULL);
|
||||
if (r == -EMSGSIZE) {
|
||||
if (max_rr == 0)
|
||||
@ -1333,18 +1346,6 @@ int dns_cache_export_shared_to_packet(DnsCache *cache, DnsPacket *p, usec_t ts,
|
||||
return r;
|
||||
|
||||
ancount++;
|
||||
if (max_rr > 0 && ancount >= max_rr) {
|
||||
DNS_PACKET_HEADER(p)->ancount = htobe16(ancount);
|
||||
ancount = 0;
|
||||
|
||||
r = dns_packet_new_query(&p->more, p->protocol, 0, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
p = p->more;
|
||||
|
||||
max_rr = UINT_MAX;
|
||||
}
|
||||
}
|
||||
|
||||
finalize:
|
||||
|
Loading…
Reference in New Issue
Block a user