[Telepathy-commits] [telepathy-gabble/master] GabbleJingleSession: session termination idempotence
Senko Rasic
senko.rasic at collabora.co.uk
Tue Dec 2 04:34:11 PST 2008
---
src/jingle-session.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/src/jingle-session.c b/src/jingle-session.c
index 01f7d75..546cdb3 100644
--- a/src/jingle-session.c
+++ b/src/jingle-session.c
@@ -1435,6 +1435,12 @@ set_state (GabbleJingleSession *sess, JingleState state)
{
GabbleJingleSessionPrivate *priv = GABBLE_JINGLE_SESSION_GET_PRIVATE (sess);
+ if (state <= priv->state)
+ {
+ DEBUG ("ignoring request to set state from %u back to %u", priv->state, state);
+ return;
+ }
+
DEBUG ("Setting state of JingleSession: %p (priv = %p) from %u to %u", sess, priv, priv->state, state);
priv->state = state;
@@ -1474,6 +1480,12 @@ gabble_jingle_session_terminate (GabbleJingleSession *sess)
{
GabbleJingleSessionPrivate *priv = GABBLE_JINGLE_SESSION_GET_PRIVATE (sess);
+ if (priv->state == JS_STATE_ENDED)
+ {
+ DEBUG ("session already terminated, ignoring terminate request");
+ return;
+ }
+
if (priv->state != JS_STATE_PENDING_CREATED)
{
gabble_jingle_session_send (sess,
--
1.5.6.5
More information about the Telepathy-commits
mailing list