summaryrefslogtreecommitdiff
path: root/sleekxmpp/basexmpp.py
diff options
context:
space:
mode:
Diffstat (limited to 'sleekxmpp/basexmpp.py')
-rw-r--r--sleekxmpp/basexmpp.py27
1 files changed, 25 insertions, 2 deletions
diff --git a/sleekxmpp/basexmpp.py b/sleekxmpp/basexmpp.py
index 61aaeff8..02f775ac 100644
--- a/sleekxmpp/basexmpp.py
+++ b/sleekxmpp/basexmpp.py
@@ -13,9 +13,9 @@ import copy
import logging
import sleekxmpp
-from sleekxmpp import plugins
+from sleekxmpp import plugins, roster
+from sleekxmpp.exceptions import IqError, IqTimeout
-import sleekxmpp.roster as roster
from sleekxmpp.stanza import Message, Presence, Iq, Error, StreamError
from sleekxmpp.stanza.roster import Roster
from sleekxmpp.stanza.nick import Nick
@@ -743,6 +743,29 @@ class BaseXMPP(XMLStream):
self.event("changed_status", presence)
+ def exception(self, exception):
+ """
+ Process any uncaught exceptions, notably IqError and
+ IqTimeout exceptions.
+
+ Overrides XMLStream.exception.
+
+ Arguments:
+ exception -- An unhandled exception object.
+ """
+ if isinstance(exception, IqError):
+ iq = exception.iq
+ log.error('%s: %s' % (iq['error']['condition'],
+ iq['error']['text']))
+ log.warning('You should catch IqError exceptions')
+ elif isinstance(exception, IqTimeout):
+ iq = exception.iq
+ log.error('Request timed out: %s' % iq)
+ log.warning('You should catch IqTimeout exceptions')
+ else:
+ log.exception(exception)
+
+
# Restore the old, lowercased name for backwards compatibility.
basexmpp = BaseXMPP