From 51f07ad48320faa743a25550e9f7c5b9bed00f52 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Thu, 5 Mar 2020 10:04:50 +0100 Subject: [PATCH] dnsdist: Debug trailing data failures --- pdns/dnsdist.cc | 3 ++- regression-tests.dnsdist/dnsdisttests.py | 1 + regression-tests.dnsdist/test_Trailing.py | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index ac24be4c58..953bfbe2fd 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -204,12 +204,13 @@ bool DNSQuestion::setTrailingData(const std::string& tail) const uint16_t messageLen = getDNSPacketLength(message, this->len); const uint16_t tailLen = tail.size(); if (tailLen > (this->size - messageLen)) { + vinfolog("Trailing data update failed, the new trailing data size was %d, the existing message length was %d, packet size was %d and buffer size %d", tail.size(), messageLen, this->len, this->size); return false; } /* Update length and copy data from the Lua string. */ this->len = messageLen + tailLen; - if(tailLen > 0) { + if (tailLen > 0) { tail.copy(message + messageLen, tailLen); } return true; diff --git a/regression-tests.dnsdist/dnsdisttests.py b/regression-tests.dnsdist/dnsdisttests.py index 773d5732ff..3145830121 100644 --- a/regression-tests.dnsdist/dnsdisttests.py +++ b/regression-tests.dnsdist/dnsdisttests.py @@ -202,6 +202,7 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase): try: request = dns.message.from_wire(data, ignore_trailing=ignoreTrailing) except dns.message.TrailingJunk as e: + print('trailing data exception in UDPResponder') if trailingDataResponse is False or forceRcode is True: raise print("UDP query with trailing data, synthesizing response") diff --git a/regression-tests.dnsdist/test_Trailing.py b/regression-tests.dnsdist/test_Trailing.py index b87b519f7a..2de5580fb7 100644 --- a/regression-tests.dnsdist/test_Trailing.py +++ b/regression-tests.dnsdist/test_Trailing.py @@ -10,6 +10,7 @@ class TestTrailingDataToBackend(DNSDistTest): # responders allow trailing data and we don't want # to mix things up. _testServerPort = 5360 + _verboseMode = True _config_template = """ newServer{address="127.0.0.1:%s"} @@ -163,6 +164,7 @@ class TestTrailingDataToBackend(DNSDistTest): self.assertEquals(receivedResponse, expectedResponse) class TestTrailingDataToDnsdist(DNSDistTest): + _verboseMode = True _config_template = """ newServer{address="127.0.0.1:%s"} @@ -171,6 +173,7 @@ class TestTrailingDataToDnsdist(DNSDistTest): function removeTrailingData(dq) local success = dq:setTrailingData("") if not success then + print("Trailing removal failed") return DNSAction.ServFail, "" end return DNSAction.None, "" -- 2.47.2