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>
This commit is contained in:
Goffi 2022-10-06 16:02:00 +02:00
commit a68564e68f

View file

@ -339,26 +339,26 @@ class XEP_0420: # pylint: disable=invalid-name
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))