My last commit was useless... now terminate the session if the connection fails

This commit is contained in:
Thibaut GIRKA 2009-09-22 22:33:00 +02:00
parent a4e019ee7e
commit d7560ed764
1 changed files with 11 additions and 10 deletions

View File

@ -141,7 +141,7 @@ class JingleSession(object):
'''
reason = xmpp.Node('reason')
reason.addChild('decline')
self.__session_terminate(reason)
self._session_terminate(reason)
def end_session(self):
''' Called when user stops or cancel session in UI. '''
@ -150,7 +150,7 @@ class JingleSession(object):
reason.addChild('success')
else:
reason.addChild('cancel')
self.__session_terminate(reason)
self._session_terminate(reason)
''' Middle-level functions to manage contents. Handle local content
cache and send change notifications. '''
@ -313,7 +313,7 @@ class JingleSession(object):
if len(self.contents) == 0:
reason = xmpp.Node('reason')
reason.setTag('success') #FIXME: Is it the good one?
self.__session_terminate(reason)
self._session_terminate(reason)
def __sessionAcceptCB(self, stanza, jingle, error, action):
if self.state != JingleStates.pending: #FIXME
@ -371,7 +371,7 @@ class JingleSession(object):
reason = xmpp.Node('reason')
reason.setTag('unsupported-applications')
self.__defaultCB(stanza, jingle, error, action)
self.__session_terminate(reason)
self._session_terminate(reason)
raise xmpp.NodeProcessed
if not transports_ok:
@ -379,7 +379,7 @@ class JingleSession(object):
reason = xmpp.Node('reason')
reason.setTag('unsupported-transports')
self.__defaultCB(stanza, jingle, error, action)
self.__session_terminate(reason)
self._session_terminate(reason)
raise xmpp.NodeProcessed
self.state = JingleStates.pending
@ -497,7 +497,7 @@ class JingleSession(object):
jingle.addChild(node=payload)
self.connection.connection.send(stanza)
def __session_terminate(self, reason=None):
def _session_terminate(self, reason=None):
assert self.state != JingleStates.ended
stanza, jingle = self.__make_jingle('session-terminate')
if reason is not None:
@ -742,7 +742,11 @@ class JingleRTPContent(JingleContent):
elif name == 'farsight-component-state-changed':
state = message.structure['state']
print message.structure['component'], state
if state == farsight.STREAM_STATE_READY:
if state == farsight.STREAM_STATE_FAILED:
reason = xmpp.Node('reason')
reason.setTag('failed-transport')
self.session._session_terminate(reason)
elif state == farsight.STREAM_STATE_READY:
self.negotiated = True
#TODO: farsight.DIRECTION_BOTH only if senders='both'
self.p2pstream.set_property('direction', farsight.DIRECTION_BOTH)
@ -948,9 +952,6 @@ class ConnectionJingle(object):
raise xmpp.NodeProcessed
def addJingleIqCallback(self, jid, id, jingle):
self.__iq_responses[(jid, id)] = jingle
def startVoIP(self, jid):
jingle = JingleSession(self, weinitiate=True, jid=jid)
self.add_jingle(jingle)