From bdb1f66ac96ff19b236f4ad5d57df6f83cdf27e9 Mon Sep 17 00:00:00 2001 From: mathieui Date: Mon, 13 Apr 2015 15:08:04 +0200 Subject: basexmpp: Add a message_error event MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "message" event only receives messages with a body, and error messages don’t necessarily have it. Removing the body requirement from the "message" event could lean to unhandled conditions in existing code. --- slixmpp/basexmpp.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'slixmpp/basexmpp.py') diff --git a/slixmpp/basexmpp.py b/slixmpp/basexmpp.py index 8419a676..f60ba560 100644 --- a/slixmpp/basexmpp.py +++ b/slixmpp/basexmpp.py @@ -143,6 +143,13 @@ class BaseXMPP(XMLStream): MatchXPath('{%s}message/{%s}body' % (self.default_ns, self.default_ns)), self._handle_message)) + + self.register_handler( + Callback('IMError', + MatchXPath('{%s}message/{%s}error' % (self.default_ns, + self.default_ns)), + self._handle_message_error)) + self.register_handler( Callback('Presence', MatchXPath("{%s}presence" % self.default_ns), @@ -690,6 +697,12 @@ class BaseXMPP(XMLStream): msg['to'] = self.boundjid self.event('message', msg) + def _handle_message_error(self, msg): + """Process incoming message error stanzas.""" + if not self.is_component and not msg['to'].bare: + msg['to'] = self.boundjid + self.event('message_error', msg) + def _handle_available(self, pres): self.roster[pres['to']][pres['from']].handle_available(pres) -- cgit v1.2.3