Support dnspython 2.7.0

CookieOption with new .server/.client attributes (rather than .data) was
added to dnspython. Adjust the code to use the new attributes if
available and fall back to the old code for dnspython<2.7.0
compatibility.

(cherry picked from commit 0d90b13646)
This commit is contained in:
Nicki Křížek 2024-10-15 10:03:25 +02:00
parent 9d59c72798
commit ef508f5052

View file

@ -121,10 +121,14 @@ def create_response(msg, tcp, first, ns10):
)
elif labels[0] != "tcponly" or tcp:
cookie = o
if len(o.data) == 8:
cookie.data = o.data + o.data
else:
cookie.data = o.data
try:
if len(o.server) == 0:
cookie.server = o.client
except AttributeError: # dnspython<2.7.0 compat
if len(o.data) == 8:
cookie.data = o.data + o.data
else:
cookie.data = o.data
r.use_edns(options=[cookie])
r.flags |= dns.flags.AA
return r