]> git.ipfire.org Git - thirdparty/systemd.git/commit
resolved: don't flush answer RRs on CNAME redirect too early 19009/head
authorLennart Poettering <lennart@poettering.net>
Mon, 15 Mar 2021 22:26:46 +0000 (23:26 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 15 Mar 2021 22:55:07 +0000 (23:55 +0100)
commitb1eea703e01da1e280e179fb119449436a0c9b8e
tree02c828987c207237a02262bb2a05f4dc9ce291ac
parenta7c0291c104cdd9d5ae2fe3c5855273bbadae13e
resolved: don't flush answer RRs on CNAME redirect too early

When doing a CNAME/DNAME redirect let's first check if the answer we
already have fully answers the redirected question already. If so, let's
use that. If not, let's properly restart things.

This simply removes one call to dns_answer_reset() that was placed too
early: instead of resetting when we detect a CNAME/DNAME redirect, do so
only after checking if the answer we already have doesn't match the
reply, and then decide to *actually* follow it. Or in other words: rely
on the dns_answer_reset() call in dns_query_go() which we'll call to
actually begin with the redirected question.

This fixes an optimization path which was broken back in 7820b320eaa608748f66f8105621640cf80e483a.

(This doesn't really matter as much as one might think, since our cache
stepped in anyway and answered the questions before going back to the
network. However, this adds noise if RRs with very short TTLs are cached
– which some CDNs do – and is of course relavant when people turn off
the local cache.)
src/resolve/resolved-dns-query.c