Make XMLMasks match properly for components.

This commit is contained in:
Lance Stout 2013-04-01 20:57:16 -07:00
parent 0a2737dc77
commit 7ac75de19d
2 changed files with 8 additions and 4 deletions

View file

@ -37,11 +37,11 @@ class MatchXMLMask(MatcherBase):
object or XML string to use as a mask.
"""
def __init__(self, criteria):
def __init__(self, criteria, default_ns='jabber:client'):
MatcherBase.__init__(self, criteria)
if isinstance(criteria, str):
self._criteria = ET.fromstring(self._criteria)
self.default_ns = 'jabber:client'
self.default_ns = default_ns
def setDefaultNS(self, ns):
"""Set the default namespace to use during comparisons.

View file

@ -1017,8 +1017,12 @@ class XMLStream(object):
if name is None:
name = 'add_handler_%s' % self.new_id()
self.register_handler(XMLCallback(name, MatchXMLMask(mask), pointer,
once=disposable, instream=instream))
self.register_handler(
XMLCallback(name,
MatchXMLMask(mask, self.default_ns),
pointer,
once=disposable,
instream=instream))
def register_handler(self, handler, before=None, after=None):
"""Add a stream event handler that will be executed when a matching