• Miek Gieben's avatar
    cache: do the msg copy right (#4207) · 268781d3
    Miek Gieben authored
    Not sure why this is proving so difficult.. pointers are hard? [Was
    tempted to rollback all tweaks here, but the original issue we're fixing
    it too important to not have a proper fix].
    
    But we need to make a copy of the message at the earliest point in the
    handler because we are changing it (adding an opt rr). If we do this on
    the original message (which is a pointer) we change it (obvs). When
    undoing those changes we do work on a copy.
    
    Re: testing. There isn't a explicit test for this, so I've added on to
    the top-level test/ directory, which indeed makes the issue visible:
    
    master:
    
    ~~~
    go test -v -run=TestLookupCacheWithoutEdns
    === RUN   TestLookupCacheWithoutEdns
        cache_test.go:154: Expected no OPT RR, but got:
            ;; OPT PSEUDOSECTION:
            ; EDNS: version 0; flags: do; udp: 2048
    --- FAIL: TestLookupCacheWithoutEdns (0.01s)
    FAIL
    ~~~
    
    This branch:
    
    ~~~
    % go test -v -run=TestLookupCacheWithoutEdns
    === RUN   TestLookupCacheWithoutEdns
    --- PASS: TestLookupCacheWithoutEdns (0.01s)
    PASS
    ok  	github.com/coredns/coredns/test	0.109s
    ~~~
    Signed-off-by: default avatarMiek Gieben <miek@miek.nl>
    268781d3
cache_test.go 3.59 KB