[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