]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
transaction: simplify handling if we get an unexpected DNS packet via TCP
authorLennart Poettering <lennart@poettering.net>
Mon, 21 Jan 2019 17:34:00 +0000 (18:34 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 15 Feb 2019 16:13:58 +0000 (17:13 +0100)
There's no point in calling on_stream_complete() as it doesn't do
anything with the zero argument. Let's hence simplify this and just log.

src/resolve/resolved-dns-transaction.c

index 075dfac01bd09bdaad7c4abe6b1736348bc49609..50c007c307896eb8ea7181c972584cc4de52b627 100644 (file)
@@ -540,12 +540,8 @@ static int on_stream_packet(DnsStream *s) {
         if (t)
                 return dns_transaction_on_stream_packet(t, p);
 
-        /* Ignore incorrect transaction id as transaction can have been canceled */
-        if (dns_packet_validate_reply(p) <= 0) {
-                log_debug("Invalid TCP reply packet.");
-                on_stream_complete(s, 0);
-        }
-
+        /* Ignore incorrect transaction id as an old transaction can have been canceled. */
+        log_debug("Received unexpected TCP reply packet with id %" PRIu16 ", ignoring.", t->id);
         return 0;
 }
 
@@ -639,8 +635,8 @@ static int dns_transaction_emit_tcp(DnsTransaction *t) {
 
                 if (t->server) {
                         dns_server_unref_stream(t->server);
-                        t->server->stream = dns_stream_ref(s);
                         s->server = dns_server_ref(t->server);
+                        t->server->stream = dns_stream_ref(s);
                 }
 
                 s->complete = on_stream_complete;