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
0d90b1364651d9ee5c3495e305187eee11961a42)
)
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