From 8ac073718d44c79e4a34efd9894966d4e6f032a9 Mon Sep 17 00:00:00 2001 From: Brian Wellington Date: Mon, 10 Aug 2020 11:41:22 -0700 Subject: [PATCH] Fix dns.message.use_tsig(). Passing only a dns.tsig.Key to dns.message.use_tsig() didn't work, as the placeholder tsig rrset on the message object was created with None as its name, not the name associated with the key. Also do a bit of refactoring to make the code more clear. --- dns/message.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dns/message.py b/dns/message.py index 4b4eb4d3..5a031180 100644 --- a/dns/message.py +++ b/dns/message.py @@ -520,9 +520,10 @@ class Message: """ if isinstance(keyring, dns.tsig.Key): - self.keyring = keyring + key = keyring + keyname = key.name elif callable(keyring): - self.keyring = keyring(self, keyname) + key = keyring(self, keyname) else: if isinstance(keyname, str): keyname = dns.name.from_text(keyname) @@ -531,7 +532,7 @@ class Message: key = keyring[keyname] if isinstance(key, bytes): key = dns.tsig.Key(keyname, key, algorithm) - self.keyring = key + self.keyring = key if original_id is None: original_id = self.id self.tsig = self._make_tsig(keyname, self.keyring.algorithm, 0, fudge, -- 2.47.3