* fixed unhandled iqs

This commit is contained in:
Nathan Fritz 2009-12-22 10:05:53 +00:00
parent 07018c0afa
commit 805afa4bc1
3 changed files with 12 additions and 13 deletions

View file

@ -65,21 +65,19 @@ class Iq(StanzaBase):
return ns return ns
return '' return ''
def reply(self):
self['type'] = 'result'
StanzaBase.reply(self)
return self
def delQuery(self): def delQuery(self):
for child in self.getchildren(): for child in self.getchildren():
if child.tag.endswith('query'): if child.tag.endswith('query'):
self.xml.remove(child) self.xml.remove(child)
return self return self
def unhandled(self):
pass
# returned unhandled error
def exception(self, traceback=None):
pass
def send(self, block=True, timeout=10): def send(self, block=True, timeout=10):
if block: if block and self['type'] in ('get', 'set'):
waitfor = Waiter('IqWait_%s' % self['id'], MatcherId(self['id'])) waitfor = Waiter('IqWait_%s' % self['id'], MatcherId(self['id']))
self.stream.registerHandler(waitfor) self.stream.registerHandler(waitfor)
StanzaBase.send(self) StanzaBase.send(self)

View file

@ -214,8 +214,8 @@ class StanzaBase(ElementBase):
def clear(self): def clear(self):
for child in self.xml.getchildren(): for child in self.xml.getchildren():
self.xml.remove(child) self.xml.remove(child)
for plugin in self.plugins: #for plugin in list(self.plugins.keys()):
del self.plugins[plugin] # del self.plugins[plugin]
def reply(self): def reply(self):
self['from'], self['to'] = self['to'], self['from'] self['from'], self['to'] = self['to'], self['from']

View file

@ -257,14 +257,15 @@ class XMLStream(object):
break break
if stanza is None: if stanza is None:
stanza = StanzaBase(self, xmlobj) stanza = StanzaBase(self, xmlobj)
unhandled = True
for handler in self.__handlers: for handler in self.__handlers:
if handler.match(xmlobj): if handler.match(xmlobj):
handler.prerun(stanza) handler.prerun(stanza)
self.eventqueue.put(('stanza', handler, stanza)) self.eventqueue.put(('stanza', handler, stanza))
if handler.checkDelete(): self.__handlers.pop(self.__handlers.index(handler)) if handler.checkDelete(): self.__handlers.pop(self.__handlers.index(handler))
else: unhandled = False
if unhandled:
stanza.unhandled() stanza.unhandled()
#loop through handlers and test match #loop through handlers and test match
#spawn threads as necessary, call handlers, sending Stanza #spawn threads as necessary, call handlers, sending Stanza