diff options
Diffstat (limited to 'src/resolve/resolved-dns-transaction.c')
-rw-r--r-- | src/resolve/resolved-dns-transaction.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c index fad462b37d..ab0f318c7a 100644 --- a/src/resolve/resolved-dns-transaction.c +++ b/src/resolve/resolved-dns-transaction.c @@ -1097,10 +1097,8 @@ void dns_transaction_process_reply(DnsTransaction *t, DnsPacket *p, bool encrypt assert_not_reached(); } - if (t->received != p) { - dns_packet_unref(t->received); - t->received = dns_packet_ref(p); - } + if (t->received != p) + DNS_PACKET_REPLACE(t->received, dns_packet_ref(p)); t->answer_source = DNS_TRANSACTION_NETWORK; @@ -1365,8 +1363,7 @@ void dns_transaction_process_reply(DnsTransaction *t, DnsPacket *p, bool encrypt * field is later replaced by the DNSSEC validated subset. The 'answer_auxiliary' field carries the * original complete record set, including RRSIG and friends. We use this when passing data to * clients that ask for DNSSEC metadata. */ - dns_answer_unref(t->answer); - t->answer = dns_answer_ref(p->answer); + DNS_ANSWER_REPLACE(t->answer, dns_answer_ref(p->answer)); t->answer_rcode = DNS_PACKET_RCODE(p); t->answer_dnssec_result = _DNSSEC_RESULT_INVALID; SET_FLAG(t->answer_query_flags, SD_RESOLVED_AUTHENTICATED, false); @@ -3453,8 +3450,7 @@ int dns_transaction_validate_dnssec(DnsTransaction *t) { break; } - dns_answer_unref(t->answer); - t->answer = TAKE_PTR(validated); + DNS_ANSWER_REPLACE(t->answer, TAKE_PTR(validated)); /* At this point the answer only contains validated * RRsets. Now, let's see if it actually answers the question |