From c3301733fbc2c3d204a52a8d22e4ab5ae6b3e9c1 Mon Sep 17 00:00:00 2001 From: Goffi Date: Tue, 17 Nov 2015 19:41:30 +0100 Subject: [PATCH] plugin XEP-0166: added delayedContentTerminate to terminate a content inside a handler --- src/plugins/plugin_xep_0166.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/plugins/plugin_xep_0166.py b/src/plugins/plugin_xep_0166.py index 280d654a..50e088b9 100644 --- a/src/plugins/plugin_xep_0166.py +++ b/src/plugins/plugin_xep_0166.py @@ -25,6 +25,7 @@ log = getLogger(__name__) from sat.core import exceptions from twisted.words.protocols.jabber import jid from twisted.internet import defer +from twisted.internet import reactor from wokkel import disco, iwokkel from twisted.words.protocols.jabber import error from twisted.words.protocols.jabber import xmlstream @@ -360,6 +361,13 @@ class XEP_0166(object): d.addErrback(self._iqError, sid, client) yield d + def delayedContentTerminate(self, *args, **kwargs): + """Put contentTerminate in queue but don't execute immediately + + This is used to terminate a content inside a handler, to avoid modifying contents + """ + reactor.callLater(0, self.contentTerminate, *args, **kwargs) + def contentTerminate(self, session, content_name, reason=REASON_SUCCESS, profile=C.PROF_KEY_NONE): """Terminate and remove a content