summaryrefslogtreecommitdiff
path: root/sleekxmpp/xmlstream/stanzabase.py
diff options
context:
space:
mode:
authorNathan Fritz <fritzy@netflint.net>2010-01-15 21:07:28 -0800
committerNathan Fritz <fritzy@netflint.net>2010-01-15 21:07:28 -0800
commite39a2395d7d5b1490e66316cd46b3f31b787cb37 (patch)
tree64579f2b44aa6fcf37c18f0029aa4021ade940c2 /sleekxmpp/xmlstream/stanzabase.py
parent5345e9a46ba6b862944bcddacd73fba448758109 (diff)
downloadslixmpp-e39a2395d7d5b1490e66316cd46b3f31b787cb37.tar.gz
slixmpp-e39a2395d7d5b1490e66316cd46b3f31b787cb37.tar.bz2
slixmpp-e39a2395d7d5b1490e66316cd46b3f31b787cb37.tar.xz
slixmpp-e39a2395d7d5b1490e66316cd46b3f31b787cb37.zip
xep 30 and 50 always reply from jid iq sent to
Diffstat (limited to 'sleekxmpp/xmlstream/stanzabase.py')
-rw-r--r--sleekxmpp/xmlstream/stanzabase.py26
1 files changed, 21 insertions, 5 deletions
diff --git a/sleekxmpp/xmlstream/stanzabase.py b/sleekxmpp/xmlstream/stanzabase.py
index 00a1439a..feb9b268 100644
--- a/sleekxmpp/xmlstream/stanzabase.py
+++ b/sleekxmpp/xmlstream/stanzabase.py
@@ -91,11 +91,27 @@ class ElementBase(object):
out.append('substanzas')
return tuple(out)
- def find(self, item):
- return self.iterables.find(item)
-
- def match(self, xml):
- return xml.tag == self.tag
+ def match(self, matchstring):
+ if isinstance(matchstring, str):
+ nodes = matchstring.split('/')
+ else:
+ nodes = matchstring
+ tagargs = nodes[0].split('@')
+ if tagargs[0] not in (self.plugins, self.name): return False
+ founditerable = False
+ for iterable in self.iterables:
+ founditerable = iterable.match(nodes[1:])
+ if founditerable: break;
+ for evals in tagargs[1:]:
+ x,y = evals.split('=')
+ if self[x] != y: return False
+ if not founditerable and len(nodes) > 1:
+ next = nodes[1].split('@')[0]
+ if next in self.plugins:
+ return self.plugins[next].match(nodes[1:])
+ else:
+ return False
+ return True
def find(self, xpath): # for backwards compatiblity, expose elementtree interface
return self.xml.find(xpath)