diff options
Diffstat (limited to 'sleekxmpp')
-rw-r--r-- | sleekxmpp/basexmpp.py | 14 | ||||
-rw-r--r-- | sleekxmpp/plugins/__init__.py | 2 |
2 files changed, 12 insertions, 4 deletions
diff --git a/sleekxmpp/basexmpp.py b/sleekxmpp/basexmpp.py index dcb90582..f655783a 100644 --- a/sleekxmpp/basexmpp.py +++ b/sleekxmpp/basexmpp.py @@ -185,6 +185,16 @@ class BaseXMPP(XMLStream): - The send queue processor - The scheduler """ + + # The current post_init() process can only resolve a single + # layer of inter-plugin dependencies. However, XEP-0115 and + # plugins which depend on it exceeds this limit and can cause + # failures if plugins are post_inited out of order, so we must + # manually process XEP-0115 first. + if 'xep_0115' in self.plugin: + if not self.plugin['xep_0115'].post_inited: + self.plugin['xep_0115'].post_init() + for name in self.plugin: if not self.plugin[name].post_inited: self.plugin[name].post_init() @@ -257,10 +267,6 @@ class BaseXMPP(XMLStream): else: raise NameError("Plugin %s not in plugins.__all__." % plugin) - # Resolve plugin inter-dependencies. - for plugin in self.plugin: - self.plugin[plugin].post_init() - def __getitem__(self, key): """Return a plugin given its name, if it has been registered.""" if key in self.plugin: diff --git a/sleekxmpp/plugins/__init__.py b/sleekxmpp/plugins/__init__.py index 0b2fa119..8c5d38f0 100644 --- a/sleekxmpp/plugins/__init__.py +++ b/sleekxmpp/plugins/__init__.py @@ -27,7 +27,9 @@ __all__ = [ 'xep_0086', # Legacy Error Codes 'xep_0092', # Software Version 'xep_0115', # Entity Capabilities + 'xep_0118', # User Tune 'xep_0128', # Extended Service Discovery + 'xep_0163', # Personal Eventing Protocol 'xep_0199', # Ping 'xep_0202', # Entity Time 'xep_0203', # Delayed Delivery |