Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann Leboulanger <asterix@lagaule.org>2008-12-15 18:32:59 +0300
committerYann Leboulanger <asterix@lagaule.org>2008-12-15 18:32:59 +0300
commit24bb239fdb5c9d9522ddaca33033f8553ca89786 (patch)
tree7b3dbd391989c7280347bd32d8a27fe1512f835a
parent5c8cd8839a4fe15eac585164109645411d7e3e65 (diff)
prevent traceback when server doen't include a query in jabber:iq:roster reply. Fixes #4579
-rw-r--r--src/common/xmpp/roster.py28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/common/xmpp/roster.py b/src/common/xmpp/roster.py
index 8f151fc36..292b3ea8b 100644
--- a/src/common/xmpp/roster.py
+++ b/src/common/xmpp/roster.py
@@ -68,19 +68,21 @@ class Roster(PlugIn):
if not sender is None and not sender.bareMatch(
self._owner.User + '@' + self._owner.Server):
return
- for item in stanza.getTag('query').getTags('item'):
- jid=item.getAttr('jid')
- if item.getAttr('subscription')=='remove':
- if jid in self._data: del self._data[jid]
- return
- self.DEBUG('Setting roster item %s...'%jid,'ok')
- if jid not in self._data: self._data[jid]={}
- self._data[jid]['name']=item.getAttr('name')
- self._data[jid]['ask']=item.getAttr('ask')
- self._data[jid]['subscription']=item.getAttr('subscription')
- self._data[jid]['groups']=[]
- if 'resources' not in self._data[jid]: self._data[jid]['resources']={}
- for group in item.getTags('group'): self._data[jid]['groups'].append(group.getData())
+ query = stanza.getTag('query')
+ if query:
+ for item in query.getTags('item'):
+ jid=item.getAttr('jid')
+ if item.getAttr('subscription')=='remove':
+ if jid in self._data: del self._data[jid]
+ return
+ self.DEBUG('Setting roster item %s...'%jid,'ok')
+ if jid not in self._data: self._data[jid]={}
+ self._data[jid]['name']=item.getAttr('name')
+ self._data[jid]['ask']=item.getAttr('ask')
+ self._data[jid]['subscription']=item.getAttr('subscription')
+ self._data[jid]['groups']=[]
+ if 'resources' not in self._data[jid]: self._data[jid]['resources']={}
+ for group in item.getTags('group'): self._data[jid]['groups'].append(group.getData())
self._data[self._owner.User+'@'+self._owner.Server]={'resources':{},'name':None,'ask':None,'subscription':None,'groups':None,}
self.set=1