diff --git a/sleekxmpp/componentxmpp.py b/sleekxmpp/componentxmpp.py
index 8eaa1408..33514859 100755
--- a/sleekxmpp/componentxmpp.py
+++ b/sleekxmpp/componentxmpp.py
@@ -23,14 +23,6 @@ from __future__ import absolute_import
from . basexmpp import basexmpp
from xml.etree import cElementTree as ET
-# some servers use different namespaces for components -- this is a hack, but is there for compatibility
-from . xmlstream.matcher import xmlmask
-from . xmlstream.matcher import xpath
-
-xmlmask.ignore_ns = True
-xpath.ignore_ns = True
-# ----------
-
from . xmlstream.xmlstream import XMLStream
from . xmlstream.xmlstream import RestartStream
from . xmlstream.matcher.xmlmask import MatchXMLMask
@@ -77,6 +69,14 @@ class ComponentXMPP(basexmpp, XMLStream):
MatchXMLMask("" % self.default_ns), \
MatchXMLMask("" % self.default_ns) \
)), self._handlePresenceSubscription))
+
+ def incoming_filter(self, xmlobj):
+ if xmlobj.tag.startswith('{jabber:client}'):
+ xmlobj.tag = xmlobj.tag.replace('jabber:client', 'jabber:component:accept')
+ for child in xmlobj.children():
+ child = self.incoming_filter(child)
+ return xmlobj
+
def _handlePresenceProbe(self, stanza):
xml = stanza.xml
diff --git a/sleekxmpp/xmlstream/xmlstream.py b/sleekxmpp/xmlstream/xmlstream.py
index 1c47d9ae..c2a581aa 100644
--- a/sleekxmpp/xmlstream/xmlstream.py
+++ b/sleekxmpp/xmlstream/xmlstream.py
@@ -289,10 +289,14 @@ class XMLStream(object):
self.state.set('ssl',False)
time.sleep(1)
self.connect()
+
+ def incoming_filter(self, xmlobj):
+ return xmlobj
def __spawnEvent(self, xmlobj):
"watching xmlOut and processes handlers"
#convert XML into Stanza
+ xmlobj = self.incoming_filter(xmlobj)
logging.debug("PROCESSING: %s" % xmlobj.tag)
stanza = None
for stanza_class in self.__root_stanza: