diff src/core/xmpp.py @ 2132:c0577837680a

core: replaced SkipHistory exception by a key in mess_data: SkipHistory was skipping all remaining triggers just to skip history, which is not the intented behaviour. Now history can be skipped by setting mess_data[u'history'] = C.HISTORY_SKIP, this way we won't skip importants triggers. When history is skipped, mess_data[u'extra'][u'history'] will be set to C.HISTORY_SKIP for frontends, so they can inform user that the message is not stored locally.
author Goffi <goffi@goffi.org>
date Sun, 05 Feb 2017 14:55:21 +0100
parents f0bc29dc8157
children cc3a6aea9508
line wrap: on
line diff
--- a/src/core/xmpp.py	Sun Feb 05 14:55:19 2017 +0100
+++ b/src/core/xmpp.py	Sun Feb 05 14:55:21 2017 +0100
@@ -234,7 +234,6 @@
 
         post_treat.addCallback(self.skipEmptyMessage)
         post_treat.addCallback(self.addToHistory, client)
-        post_treat.addErrback(self.treatmentsEb)
         post_treat.addCallback(self.bridgeSignal, client, data)
         post_treat.addErrback(self.cancelErrorTrap)
         post_treat.callback(data)
@@ -245,10 +244,11 @@
         return data
 
     def addToHistory(self, data, client):
-        return self.host.memory.addToHistory(client, data)
-
-    def treatmentsEb(self, failure_):
-        failure_.trap(exceptions.SkipHistory)
+        if data.pop(u'history', None) == C.HISTORY_SKIP:
+            log.info(u'history is skipped as requested')
+            data[u'extra'][u'history'] = C.HISTORY_SKIP
+        else:
+            return self.host.memory.addToHistory(client, data)
 
     def bridgeSignal(self, dummy, client, data):
         try: