]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
Fix dns.message.use_tsig().
authorBrian Wellington <bwelling@xbill.org>
Mon, 10 Aug 2020 18:41:22 +0000 (11:41 -0700)
committerBrian Wellington <bwelling@xbill.org>
Mon, 10 Aug 2020 18:41:22 +0000 (11:41 -0700)
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

index 4b4eb4d33b64238b741174fb9a73f58d3d6a7937..5a0311800115501d8622272184b42bcfcc3b4b13 100644 (file)
@@ -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,