From fa02d04ee9a4787c2c39032185b6fe3e7146b26b Mon Sep 17 00:00:00 2001 From: Ronan Pigott Date: Sat, 12 Oct 2024 10:00:56 -0700 Subject: [PATCH] resolved: update condition for caching full packets Previously a full packet was cached only if the CD bit was set, but this no longer corresponds to the cases where bypass is enabled. Update the cache to retain a full packet in the cases where it might actually be useful. --- src/resolve/resolved-dns-transaction.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index 17a815cd446..f78bf0702b2 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -840,10 +840,8 @@ static void dns_transaction_cache_answer(DnsTransaction *t) { dns_transaction_key(t), t->answer_rcode, t->answer, - DNS_PACKET_CD(t->received) ? t->received : NULL, /* only cache full packets with CD on, - * since our use case for caching them - * is "bypass" mode which is only - * enabled for CD packets. */ + /* If neither DO nor EDE is set, the full packet isn't useful to cache */ + DNS_PACKET_DO(t->received) || t->answer_ede_rcode > 0 || t->answer_ede_msg ? t->received : NULL, t->answer_query_flags, t->answer_dnssec_result, t->answer_nsec_ttl, -- 2.47.3