]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: update condition for caching full packets
authorRonan Pigott <ronan@rjp.ie>
Sat, 12 Oct 2024 17:00:56 +0000 (10:00 -0700)
committerRonan Pigott <ronan@rjp.ie>
Sat, 19 Oct 2024 04:21:35 +0000 (21:21 -0700)
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

index 17a815cd44604367b072a939c4ca7f5da50010b9..f78bf0702b2353f265eb1b1b9dd44bcdce41996d 100644 (file)
@@ -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,