when we get an error (when we asked meta contact) don't except the server to include the sent request as it's only a SHOULD in RFC3390 9.2.3.7. detect the answer by iq id instead.
This commit is contained in:
parent
57aeb0d0ef
commit
4adf2c4f6d
|
@ -936,6 +936,9 @@ class Connection(ConnectionHandlers):
|
||||||
iq = common.xmpp.Iq(typ='get')
|
iq = common.xmpp.Iq(typ='get')
|
||||||
iq2 = iq.addChild(name='query', namespace='jabber:iq:private')
|
iq2 = iq.addChild(name='query', namespace='jabber:iq:private')
|
||||||
iq2.addChild(name='storage', namespace='storage:metacontacts')
|
iq2.addChild(name='storage', namespace='storage:metacontacts')
|
||||||
|
id = self.connection.getAnID()
|
||||||
|
iq.setID(id)
|
||||||
|
self.awaiting_answers[id] = (METACONTACTS_ARRIVED, )
|
||||||
self.connection.send(iq)
|
self.connection.send(iq)
|
||||||
|
|
||||||
def store_metacontacts(self, tags_list):
|
def store_metacontacts(self, tags_list):
|
||||||
|
|
|
@ -39,6 +39,7 @@ STATUS_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd',
|
||||||
VCARD_PUBLISHED = 'vcard_published'
|
VCARD_PUBLISHED = 'vcard_published'
|
||||||
VCARD_ARRIVED = 'vcard_arrived'
|
VCARD_ARRIVED = 'vcard_arrived'
|
||||||
AGENT_REMOVED = 'agent_removed'
|
AGENT_REMOVED = 'agent_removed'
|
||||||
|
METACONTACTS_ARRIVED = 'metacontacts_arrived'
|
||||||
HAS_IDLE = True
|
HAS_IDLE = True
|
||||||
try:
|
try:
|
||||||
import common.idle as idle # when we launch gajim from sources
|
import common.idle as idle # when we launch gajim from sources
|
||||||
|
@ -970,6 +971,29 @@ class ConnectionVcard:
|
||||||
elif self.awaiting_answers[id][0] == AGENT_REMOVED:
|
elif self.awaiting_answers[id][0] == AGENT_REMOVED:
|
||||||
jid = self.awaiting_answers[id][1]
|
jid = self.awaiting_answers[id][1]
|
||||||
self.dispatch('AGENT_REMOVED', jid)
|
self.dispatch('AGENT_REMOVED', jid)
|
||||||
|
elif self.awaiting_answers[id][0] == METACONTACTS_ARRIVED:
|
||||||
|
if iq_obj.getType() == 'result':
|
||||||
|
# Metacontact tags
|
||||||
|
# http://www.jabber.org/jeps/jep-XXXX.html
|
||||||
|
meta_list = {}
|
||||||
|
query = iq_obj.getTag('query')
|
||||||
|
storage = query.getTag('storage')
|
||||||
|
metas = storage.getTags('meta')
|
||||||
|
for meta in metas:
|
||||||
|
jid = meta.getAttr('jid')
|
||||||
|
tag = meta.getAttr('tag')
|
||||||
|
data = {'jid': jid}
|
||||||
|
order = meta.getAttr('order')
|
||||||
|
if order != None:
|
||||||
|
data['order'] = order
|
||||||
|
if meta_list.has_key(tag):
|
||||||
|
meta_list[tag].append(data)
|
||||||
|
else:
|
||||||
|
meta_list[tag] = [data]
|
||||||
|
self.dispatch('METACONTACTS', meta_list)
|
||||||
|
# We can now continue connection by requesting the roster
|
||||||
|
self.connection.initRoster()
|
||||||
|
|
||||||
del self.awaiting_answers[id]
|
del self.awaiting_answers[id]
|
||||||
|
|
||||||
def _vCardCB(self, con, vc):
|
def _vCardCB(self, con, vc):
|
||||||
|
@ -1135,26 +1159,6 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco)
|
||||||
self.bookmarks.append(bm)
|
self.bookmarks.append(bm)
|
||||||
self.dispatch('BOOKMARKS', self.bookmarks)
|
self.dispatch('BOOKMARKS', self.bookmarks)
|
||||||
|
|
||||||
elif ns == 'storage:metacontacts':
|
|
||||||
# Metacontact tags
|
|
||||||
# http://www.jabber.org/jeps/jep-XXXX.html
|
|
||||||
meta_list = {}
|
|
||||||
metas = storage.getTags('meta')
|
|
||||||
for meta in metas:
|
|
||||||
jid = meta.getAttr('jid')
|
|
||||||
tag = meta.getAttr('tag')
|
|
||||||
data = {'jid': jid}
|
|
||||||
order = meta.getAttr('order')
|
|
||||||
if order != None:
|
|
||||||
data['order'] = order
|
|
||||||
if meta_list.has_key(tag):
|
|
||||||
meta_list[tag].append(data)
|
|
||||||
else:
|
|
||||||
meta_list[tag] = [data]
|
|
||||||
self.dispatch('METACONTACTS', meta_list)
|
|
||||||
# We can now continue connection by requesting the roster
|
|
||||||
self.connection.initRoster()
|
|
||||||
|
|
||||||
elif ns == 'gajim:prefs':
|
elif ns == 'gajim:prefs':
|
||||||
# Preferences data
|
# Preferences data
|
||||||
# http://www.jabber.org/jeps/jep-0049.html
|
# http://www.jabber.org/jeps/jep-0049.html
|
||||||
|
@ -1847,8 +1851,6 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco)
|
||||||
common.xmpp.NS_ROSTER)
|
common.xmpp.NS_ROSTER)
|
||||||
con.RegisterHandler('iq', self._PrivateCB, 'result',
|
con.RegisterHandler('iq', self._PrivateCB, 'result',
|
||||||
common.xmpp.NS_PRIVATE)
|
common.xmpp.NS_PRIVATE)
|
||||||
con.RegisterHandler('iq', self._PrivateErrorCB, 'error',
|
|
||||||
common.xmpp.NS_PRIVATE)
|
|
||||||
con.RegisterHandler('iq', self._HttpAuthCB, 'get',
|
con.RegisterHandler('iq', self._HttpAuthCB, 'get',
|
||||||
common.xmpp.NS_HTTP_AUTH)
|
common.xmpp.NS_HTTP_AUTH)
|
||||||
con.RegisterHandler('iq', self._gMailNewMailCB, 'set',
|
con.RegisterHandler('iq', self._gMailNewMailCB, 'set',
|
||||||
|
|
Loading…
Reference in New Issue