Mercurial > libervia-backend
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))