• Simon Kelley's avatar
    Fix logic on EDNS0 headers. · 6fd5d79e
    Simon Kelley authored
    The logic to determine is an EDNS0 header was added was wrong. It compared
    the packet length before and after the operations on the EDNS0 header,
    but these can include adding options to an existing EDNS0 header. So
    a query may have an existing EDNS0 header, which is extended, and logic
    thinks that it had a header added de-novo.
    
    Replace this with a simpler system. Check if the packet has an EDSN0 header,
    do the updates/additions, and then check again. If it didn't have one
    initially, but it has one laterly, that's the correct condition
    to strip the header from a reply, and to assume that the client
    cannot handle packets larger than 512 bytes.
    6fd5d79e
forward.c 65.6 KB