diff --git a/sat/core/xmpp.py b/sat/core/xmpp.py index 9410ebc1..d86daa5f 100644 --- a/sat/core/xmpp.py +++ b/sat/core/xmpp.py @@ -616,7 +616,7 @@ class SatXMPPEntity(core_types.SatXMPPEntity): """ raise NotImplementedError - async def send(self, obj): + async def a_send(self, obj): # original send method accept string # but we restrict to domish.Element to make trigger treatments easier assert isinstance(obj, domish.Element) @@ -630,6 +630,9 @@ class SatXMPPEntity(core_types.SatXMPPEntity): return super().send(obj) + def send(self, obj): + defer.ensureDeferred(self.a_send(obj)) + async def sendMessageData(self, mess_data): """Convenient method to send message data to stream @@ -647,7 +650,7 @@ class SatXMPPEntity(core_types.SatXMPPEntity): # This trigger point can't cancel the method await self.host_app.trigger.asyncPoint("sendMessageData", self, mess_data, triggers_no_cancel=True) - await self.send(mess_data["xml"]) + await self.a_send(mess_data["xml"]) return mess_data def sendMessage( @@ -738,7 +741,9 @@ class SatXMPPEntity(core_types.SatXMPPEntity): pre_xml_treatments.addCallback(lambda __: self.generateMessageXML(data, post_xml_treatments)) pre_xml_treatments.addCallback(lambda __: post_xml_treatments) pre_xml_treatments.addErrback(self._cancelErrorTrap) - post_xml_treatments.addCallback(lambda __: self.sendMessageData(data)) + post_xml_treatments.addCallback( + lambda __: defer.ensureDeferred(self.sendMessageData(data)) + ) if send_only: log.debug(_("Triggers, storage and echo have been inhibited by the " "'send_only' parameter")) diff --git a/sat/plugins/plugin_xep_0033.py b/sat/plugins/plugin_xep_0033.py index a1e1764b..d7ec3f99 100644 --- a/sat/plugins/plugin_xep_0033.py +++ b/sat/plugins/plugin_xep_0033.py @@ -155,7 +155,9 @@ class XEP_0033(object): def send(mess_data, skip_send=False): d = defer.Deferred() if not skip_send: - d.addCallback(client.sendMessageData) + d.addCallback( + lambda ret: defer.ensureDeferred(client.sendMessageData(ret)) + ) d.addCallback( lambda ret: defer.ensureDeferred(client.messageAddToHistory(ret)) ) diff --git a/sat/plugins/plugin_xep_0297.py b/sat/plugins/plugin_xep_0297.py index c78717ec..edca99e6 100644 --- a/sat/plugins/plugin_xep_0297.py +++ b/sat/plugins/plugin_xep_0297.py @@ -22,6 +22,8 @@ from sat.core.constants import Const as C from sat.core.i18n import _, D_ from sat.core.log import getLogger +from twisted.internet import defer + log = getLogger(__name__) from wokkel import disco, iwokkel @@ -104,7 +106,7 @@ class XEP_0297(object): msg.addChild(forwarded_elt) client = self.host.getClient(profile_key) - return client.sendMessageData({"xml": msg}) + return defer.ensureDeferred(client.sendMessageData({"xml": msg})) @implementer(iwokkel.IDisco)