diff sat/plugins/plugin_xep_0420.py @ 3917:626629781a53

plugin XEP-0420: fix exception on missing `from` or `to`: fix exception raised on missing `from` or `to` attribute when the policy doesn't require them. Patch made by Syndace <me@syndace.dev>
author Goffi <goffi@goffi.org>
date Thu, 06 Oct 2022 16:02:00 +0200
parents 8289ac1b34f4
children cecf45416403
line wrap: on
line diff
--- a/sat/plugins/plugin_xep_0420.py	Thu Oct 06 15:19:08 2022 +0200
+++ b/sat/plugins/plugin_xep_0420.py	Thu Oct 06 16:02:00 2022 +0200
@@ -339,26 +339,26 @@
 
         if profile.to_policy is not SCEAffixPolicy.NOT_NEEDED:
             recipient = stanza.getAttribute("to", None)
-            if recipient is None:
+            if recipient is not None:
+                to_element = envelope.addElement((NS_SCE, "to"))
+                to_element["jid"] = jid.JID(recipient).userhost()
+            elif profile.to_policy is SCEAffixPolicy.REQUIRED:
                 raise ValueError(
                     "<to/> affix requested, but stanza doesn't have the 'to' attribute"
                     " set."
                 )
 
-            to_element = envelope.addElement((NS_SCE, "to"))
-            to_element["jid"] = jid.JID(recipient).userhost()
-
         if profile.from_policy is not SCEAffixPolicy.NOT_NEEDED:
             sender = stanza.getAttribute("from", None)
-            if sender is None:
+            if sender is not None:
+                from_element = envelope.addElement((NS_SCE, "from"))
+                from_element["jid"] = jid.JID(sender).userhost()
+            elif profile.from_policy is SCEAffixPolicy.REQUIRED:
                 raise ValueError(
                     "<from/> affix requested, but stanza doesn't have the 'from'"
                     " attribute set."
                 )
 
-            from_element = envelope.addElement((NS_SCE, "from"))
-            from_element["jid"] = jid.JID(sender).userhost()
-
         for affix, policy in profile.custom_policies.items():
             if policy is not SCEAffixPolicy.NOT_NEEDED:
                 envelope.addChild(affix.create(stanza))