Mercurial > libervia-backend
diff src/plugins/plugin_xep_0260.py @ 1757:abd6d6f89006
plugins XEP-0065, XEP-0260: fixed session creation order: session is created earlied, and file object associated in a second time if needed
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 17 Dec 2015 22:37:58 +0100 |
parents | 061011fad5b1 |
children | a66d34353f34 |
line wrap: on
line diff
--- a/src/plugins/plugin_xep_0260.py Thu Dec 17 22:37:56 2015 +0100 +++ b/src/plugins/plugin_xep_0260.py Thu Dec 17 22:37:58 2015 +0100 @@ -132,6 +132,7 @@ 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 @@ 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)