]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: tweak sections we add answer RRs to
authorLennart Poettering <lennart@poettering.net>
Wed, 24 Mar 2021 21:02:55 +0000 (22:02 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 25 Mar 2021 10:42:39 +0000 (11:42 +0100)
Previously we'd stick all answer sections RRs we acquired into
the authoritative section if we didn't find them directly answering our
question. Let's put them into additional instead. The authoritative
section should hence only include what comes from the upstream
authoritative section, and nothing else.

src/resolve/resolved-dns-stub.c

index b6d14b9305ec490e6f0298b6363521bc19ff24ec..7cbbdc725c00c8f7bf71f41bd66374a25f6b2259 100644 (file)
@@ -323,27 +323,27 @@ static int dns_stub_assign_sections(
         if (r < 0)
                 return r;
 
-        /* Include all RRs that originate from the answer or authority sections, and aren't listed in the
+        /* Include all RRs that originate from the authority sections, and aren't already listed in the
          * answer section, in the authority section */
         r = dns_stub_collect_answer_by_section(
                         &q->reply_authoritative,
                         q->answer,
-                        DNS_ANSWER_SECTION_ANSWER,
+                        DNS_ANSWER_SECTION_AUTHORITY,
                         q->reply_answer, NULL,
                         edns0_do);
         if (r < 0)
                 return r;
+
+        /* Include all RRs that originate from the answer or additional sections in the additional section
+         * (except if already listed in the other two sections). Also add all RRs with no section marking. */
         r = dns_stub_collect_answer_by_section(
-                        &q->reply_authoritative,
+                        &q->reply_additional,
                         q->answer,
-                        DNS_ANSWER_SECTION_AUTHORITY,
-                        q->reply_answer, NULL,
+                        DNS_ANSWER_SECTION_ANSWER,
+                        q->reply_answer, q->reply_authoritative,
                         edns0_do);
         if (r < 0)
                 return r;
-
-        /* Include all RRs that originate from the additional sections in the additional section (except if
-         * already listed in the other two sections). Also add all RRs with no section marking. */
         r = dns_stub_collect_answer_by_section(
                         &q->reply_additional,
                         q->answer,