Mercurial > libervia-backend
comparison 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 |
comparison
equal
deleted
inserted
replaced
1756:061011fad5b1 | 1757:abd6d6f89006 |
---|---|
130 client = self.host.getClient(profile) | 130 client = self.host.getClient(profile) |
131 content_data = session['contents'][content_name] | 131 content_data = session['contents'][content_name] |
132 transport_data = content_data['transport_data'] | 132 transport_data = content_data['transport_data'] |
133 sid = transport_data['sid'] = unicode(uuid.uuid4()) | 133 sid = transport_data['sid'] = unicode(uuid.uuid4()) |
134 session_hash = transport_data['session_hash'] = self._s5b.getSessionHash(client.jid, session['peer_jid'], sid) | 134 session_hash = transport_data['session_hash'] = self._s5b.getSessionHash(client.jid, session['peer_jid'], sid) |
135 transport_data['stream_d'] = self._s5b.registerHash(session_hash, None, profile) | |
135 candidates = transport_data['candidates'] = yield self._s5b.getCandidates(profile) | 136 candidates = transport_data['candidates'] = yield self._s5b.getCandidates(profile) |
136 mode = 'tcp' # XXX: we only manage tcp for now | 137 mode = 'tcp' # XXX: we only manage tcp for now |
137 transport_elt = self._buildCandidates(session, candidates, sid, session_hash, client, mode) | 138 transport_elt = self._buildCandidates(session, candidates, sid, session_hash, client, mode) |
138 | 139 |
139 defer.returnValue(transport_elt) | 140 defer.returnValue(transport_elt) |
355 # elif action == self._j.A_START: | 356 # elif action == self._j.A_START: |
356 elif action == self._j.A_START: | 357 elif action == self._j.A_START: |
357 session_hash = transport_data['session_hash'] | 358 session_hash = transport_data['session_hash'] |
358 peer_candidates = transport_data['peer_candidates'] | 359 peer_candidates = transport_data['peer_candidates'] |
359 file_obj = content_data['file_obj'] | 360 file_obj = content_data['file_obj'] |
360 stream_d = self._s5b.registerHash(session_hash, file_obj, profile) | 361 self._s5b.associateFileObj(session_hash, file_obj, profile) |
362 stream_d = transport_data.pop('stream_d') | |
361 stream_d.chainDeferred(content_data['finished_d']) | 363 stream_d.chainDeferred(content_data['finished_d']) |
362 d = self._s5b.getBestCandidate(peer_candidates, session_hash, profile) | 364 d = self._s5b.getBestCandidate(peer_candidates, session_hash, profile) |
363 d.addCallback(self._foundPeerCandidate, session, transport_data, content_name, client) | 365 d.addCallback(self._foundPeerCandidate, session, transport_data, content_name, client) |
364 | 366 |
365 elif action == self._j.A_SESSION_INITIATE: | 367 elif action == self._j.A_SESSION_INITIATE: |