]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
renamed pkt:clear() to pkt:recycle() and added tests
authorMarek Vavruša <mvavrusa@cloudflare.com>
Wed, 3 Jan 2018 20:00:49 +0000 (12:00 -0800)
committerPetr Špaček <petr.spacek@nic.cz>
Thu, 4 Jan 2018 10:04:41 +0000 (11:04 +0100)
daemon/lua/kres.lua
lib/README.rst
modules/renumber/renumber.lua
tests/config/basic_test.lua

index 8578b057b535fa7dfddff88824461f5639ca5562..216911975f5ca84f06aa948b6c281d2001415c32 100644 (file)
@@ -454,7 +454,12 @@ ffi.metatype( knot_pkt_t, {
                        if ret ~= 0 then return nil, knot_strerror(ret) end
                        return true
                end,
-               clear = function (pkt) return C.kr_pkt_recycle(pkt) end,
+               recycle = function (pkt)
+                       assert(pkt ~= nil)
+                       local ret = C.kr_pkt_recycle(pkt)
+                       if ret ~= 0 then return nil, knot_strerror(ret) end
+                       return true
+               end,
                question = function(pkt, qname, qclass, qtype)
                        assert(pkt ~= nil)
                        assert(qclass ~= nil, string.format('invalid class: %s', qclass))
index 0e844669a70883f043bdd02f988825b2b94ef251..267931bcaf16c97f809077977057f4cf98372abc 100644 (file)
@@ -227,7 +227,7 @@ e.g. you can't write to ANSWER after writing AUTHORITY, it's like stages where y
 
                pkt:rcode(kres.rcode.NXDOMAIN)
                -- Clear answer and write QUESTION
-               pkt:clear()
+               pkt:recycle()
                pkt:question('\7blocked', kres.class.IN, kres.type.SOA)
                -- Start writing data
                pkt:begin(kres.section.ANSWER)
index a44f10111fdc0fd9f1ea282d0f6a354fcc919e12..457e06f4bc99c9a01fc8a7cf248f9da156dd331f 100644 (file)
@@ -88,7 +88,7 @@ local function rule()
                local qname = pkt:qname()
                local qclass = pkt:qclass()
                local qtype = pkt:qtype()
-               pkt:clear()
+               pkt:recycle()
                pkt:question(qname, qclass, qtype)
                for i = 1, ancount do
                        local rr = records[i]
index df4fff71089ebb9cffb0c7661c91b982e7a79150..6dca8bcbbffbcc80bb6ec547805cf85c3ba23ab3 100644 (file)
@@ -87,6 +87,11 @@ local function test_packet_functions()
        same(parsed:id(), pkt:id(), 'parsed packet has same MSGID')
        same(parsed:ancount(), pkt:ancount(), 'parsed packet has same answer count')
        same(parsed:tostring(), pkt:tostring(), 'parsed packet is equal to source packet')
+       -- Test recycling of packets
+       ok(pkt:recycle(), 'recycle() works')
+       is(pkt:ancount(), 0, 'recycle() clears records')
+       is(pkt:qname(), nil, 'recycle() clears question')
+       is(#pkt:towire(), 12, 'recycle() clears the packet wireformat')
 end
 
 return {