plugins XEP-0065, XEP-0260: fixed session creation order: session is created earlied, and file object associated in a second time if needed

This commit is contained in:
Goffi 2015-12-17 22:37:58 +01:00
commit 84fbbbc299
2 changed files with 15 additions and 3 deletions

View file

@ -132,6 +132,7 @@ class XEP_0260(object):
transport_data = content_data['transport_data']
sid = transport_data['sid'] = unicode(uuid.uuid4())
session_hash = transport_data['session_hash'] = self._s5b.getSessionHash(client.jid, session['peer_jid'], sid)
transport_data['stream_d'] = self._s5b.registerHash(session_hash, None, profile)
candidates = transport_data['candidates'] = yield self._s5b.getCandidates(profile)
mode = 'tcp' # XXX: we only manage tcp for now
transport_elt = self._buildCandidates(session, candidates, sid, session_hash, client, mode)
@ -357,7 +358,8 @@ class XEP_0260(object):
session_hash = transport_data['session_hash']
peer_candidates = transport_data['peer_candidates']
file_obj = content_data['file_obj']
stream_d = self._s5b.registerHash(session_hash, file_obj, profile)
self._s5b.associateFileObj(session_hash, file_obj, profile)
stream_d = transport_data.pop('stream_d')
stream_d.chainDeferred(content_data['finished_d'])
d = self._s5b.getBestCandidate(peer_candidates, session_hash, profile)
d.addCallback(self._foundPeerCandidate, session, transport_data, content_name, client)