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.
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,