handle_session_accept
authorNicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Tue, 10 Aug 2010 23:21:55 +0200
changeset 96 3922f5c96973
parent 95 cac87df18e6d
child 97 3968001b0396
handle_session_accept
jingle/action-handlers.c
jingle/action-handlers.h
jingle/jingle.c
--- a/jingle/action-handlers.c	Tue Aug 10 22:14:17 2010 +0200
+++ b/jingle/action-handlers.c	Tue Aug 10 23:21:55 2010 +0200
@@ -336,6 +336,39 @@
   g_free(disp);
 }
 
+void handle_session_accept(JingleNode *jn)
+{
+  JingleSession *sess;
+  JingleContent *jc;
+  SessionContent *sc;
+  
+  GSList *el;
+  const gchar *from = lm_message_get_from(jn->message);
+  
+  // We're looking if the session exist
+  sess = session_find_by_sid(jn->sid, from);
+  if (sess == NULL) {
+    // TODO: send unknow-session
+    return;
+  }
+  
+  jingle_ack_iq(jn->message);
+  
+  for (el = jn->content; el; el = el->next) {
+    jc = (JingleContent*)el->data;
+    session_changestate_sessioncontent(sess, jc->name,
+                                       JINGLE_SESSION_STATE_ACTIVE);
+  }
+  
+  // We delete content who have been refuse
+  for (el = sess->content; el; el = el->next) {
+    sc = (SessionContent*) el->data;
+    if (sc->state == JINGLE_SESSION_STATE_PENDING) {
+      session_remove_sessioncontent(sess, sc->name);
+    }
+  }
+}
+
 void handle_session_terminate(JingleNode *jn)
 {
   JingleSession *sess;
--- a/jingle/action-handlers.h	Tue Aug 10 22:14:17 2010 +0200
+++ b/jingle/action-handlers.h	Tue Aug 10 23:21:55 2010 +0200
@@ -8,6 +8,7 @@
 void handle_content_add(JingleNode *jn);
 void handle_content_reject(JingleNode *jn);
 void handle_content_remove(JingleNode *jn);
+void handle_session_accept(JingleNode *jn);
 void handle_session_initiate(JingleNode *jn);
 void handle_session_terminate(JingleNode *jn);
 #endif
--- a/jingle/jingle.c	Tue Aug 10 22:14:17 2010 +0200
+++ b/jingle/jingle.c	Tue Aug 10 23:21:55 2010 +0200
@@ -72,7 +72,7 @@
   { "session-info",      NULL },
   { "session-initiate",  handle_session_initiate },
   { "session-terminate", handle_session_terminate },
-  { "transport-accept",  NULL },
+  { "transport-accept",  handle_session_accept },
   { "transport-info",    NULL },
   { "transport-reject",  NULL },
   { "transport-replace", NULL },
@@ -417,9 +417,7 @@
     return NULL;
 
   g_slist_foreach(jn->content, lm_insert_jinglecontent, jnode);
-  scr_LogPrint(LPRINT_LOGNORM, "%s",
-                 lm_message_node_to_string(m->node));
-                 return m;
+  return m;
 }
 
 static void lm_insert_jinglecontent(gpointer data, gpointer userdata)