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: