delete the sess if ack is an error
authorNicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Tue, 10 Aug 2010 20:00:34 +0200
changeset 92 e6c23d765038
parent 91 7d3e75eec29e
child 93 4038cce7fd80
delete the sess if ack is an error
jingle/send.c
--- a/jingle/send.c	Tue Aug 10 18:59:28 2010 +0200
+++ b/jingle/send.c	Tue Aug 10 20:00:34 2010 +0200
@@ -127,6 +127,7 @@
 {
   LmMessageNode *node;
   const gchar *type, *cause;
+  JingleSession *sess = (JingleSession*)data;
   
   if(lm_message_get_sub_type(mess) == LM_MESSAGE_SUB_TYPE_RESULT)
     return;
@@ -134,11 +135,12 @@
     node = lm_message_get_node(mess);
     node = lm_message_node_get_child(node,"error");
     type = lm_message_node_get_attribute(node, "type");
-    if(node->children != NULL) {
+    if(node->children != NULL)
       cause = node->children->name;
-    }
-    scr_LogPrint(LPRINT_LOGNORM, "Jingle: session-initiate refuse: %s %s", type, cause);
-  } 
+    scr_LogPrint(LPRINT_LOGNORM, "Jingle: session-initiate %s: %s", type, cause);
+  }
+  // We delete the session, there was an error
+  session_delete(sess);
 }
 
 void jingle_send_session_initiate(JingleSession *js)
@@ -154,7 +156,7 @@
   if (mess) {
     ackhandle = g_new0(JingleAckHandle, 1);
     ackhandle->callback = jingle_handle_ack_iq_si;
-    ackhandle->user_data = NULL;
+    ackhandle->user_data = (gpointer*)js;
     lm_connection_send_with_reply(lconnection, mess,
                                   jingle_new_ack_handler(ackhandle), NULL);
     lm_message_unref(mess);