From: Remi Gacogne Date: Thu, 5 Mar 2020 09:04:50 +0000 (+0100) Subject: dnsdist: Debug trailing data failures X-Git-Tag: auth-4.4.0-alpha2~65^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F9556%2Fhead;p=thirdparty%2Fpdns.git dnsdist: Debug trailing data failures --- 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, ""