Start the send_session_initiate function
authorNicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Fri, 23 Jul 2010 04:50:57 +0200
changeset 68 ae8b0d03887e
parent 67 c12618793df0
child 69 a56a2535ab2e
Start the send_session_initiate function
jingle-filetransfer/filetransfer.c
jingle-ibb/ibb.c
jingle/jingle.c
jingle/register.h
jingle/send.c
jingle/sessions.h
--- a/jingle-filetransfer/filetransfer.c	Fri Jul 23 03:23:23 2010 +0200
+++ b/jingle-filetransfer/filetransfer.c	Fri Jul 23 04:50:57 2010 +0200
@@ -41,7 +41,7 @@
 
 
 gconstpointer jingle_ft_check(JingleContent *cn, GError **err);
-void jingle_ft_handle(gconstpointer data, LmMessageNode *node);
+void jingle_ft_handle(JingleAction act, gconstpointer data, LmMessageNode *node);
 gboolean jingle_ft_handle_data(gconstpointer data, const gchar *data2, guint len);
 static gboolean is_md5_hash(const gchar *hash);
 static void jingle_ft_init(void);
@@ -148,7 +148,7 @@
   return (gconstpointer) ft;
 }
 
-void jingle_ft_handle(gconstpointer data, LmMessageNode *node)
+void jingle_ft_handle(JingleAction act, gconstpointer data, LmMessageNode *node)
 {
   return;
 }
--- a/jingle-ibb/ibb.c	Fri Jul 23 03:23:23 2010 +0200
+++ b/jingle-ibb/ibb.c	Fri Jul 23 04:50:57 2010 +0200
@@ -37,7 +37,7 @@
 
 gconstpointer jingle_ibb_check(JingleContent *cn, GError **err);
 gboolean jingle_ibb_cmp(gconstpointer data1, gconstpointer data2);
-void jingle_ibb_handle(gconstpointer data, LmMessageNode *node);
+void jingle_ibb_handle(JingleAction act, gconstpointer data, LmMessageNode *node);
 
 static void jingle_ibb_init(void);
 static void jingle_ibb_uninit(void);
@@ -145,18 +145,20 @@
   return 1;
 }
 
-void jingle_ibb_handle(gconstpointer data, LmMessageNode *node)
+void jingle_ibb_handle(JingleAction act, gconstpointer data, LmMessageNode *node)
 {
-  JingleIBB *jibb = (JingleIBB*) data;
-  gchar *bsize = g_strdup_printf("%i", jibb->blocksize);
-  if (lm_message_node_get_child(node, "transport") != NULL)
-    return;
+  if (act == JINGLE_SESSION_INITIATE) {
+    JingleIBB *jibb = (JingleIBB*) data;
+    gchar *bsize = g_strdup_printf("%i", jibb->blocksize);
+    if (lm_message_node_get_child(node, "transport") != NULL)
+      return;
   
-  LmMessageNode *node2 = lm_message_node_add_child(node, "transport", NULL);
-  lm_message_node_set_attributes(node2, "xmlns", NS_JINGLE_TRANSPORT_IBB,
-                                 "sid", jibb->sid,
-                                 "block-size", bsize);
-  g_free(bsize);
+    LmMessageNode *node2 = lm_message_node_add_child(node, "transport", NULL);
+    lm_message_node_set_attributes(node2, "xmlns", NS_JINGLE_TRANSPORT_IBB,
+                                   "sid", jibb->sid,
+                                   "block-size", bsize);
+    g_free(bsize);
+  }
 }
 
 static void jingle_ibb_init(void)
--- a/jingle/jingle.c	Fri Jul 23 03:23:23 2010 +0200
+++ b/jingle/jingle.c	Fri Jul 23 04:50:57 2010 +0200
@@ -408,11 +408,11 @@
    
   xmlns =  lm_message_node_get_attribute(content->transport, "xmlns");
   tfunc = jingle_get_transportfuncs(xmlns);
-  tfunc->handle(tfunc->check(content, NULL), node);
+  //tfunc->handle(tfunc->check(content, NULL), node);
 
   xmlns =  lm_message_node_get_attribute(content->description, "xmlns");
   afunc = jingle_get_appfuncs(xmlns);
-  afunc->handle(afunc->check(content, NULL), node);
+  //afunc->handle(afunc->check(content, NULL), node);
 }
 
 void handle_trans_data(const gchar *xmlns, gconstpointer data, const gchar *data2, guint len)
--- a/jingle/register.h	Fri Jul 23 03:23:23 2010 +0200
+++ b/jingle/register.h	Fri Jul 23 04:50:57 2010 +0200
@@ -35,11 +35,11 @@
 } JingleTransportPriority;
 
 typedef gconstpointer (*JingleAppCheck) (JingleContent *cn, GError **err);
-typedef void (*JingleAppHandle) (gconstpointer data, LmMessageNode *node);
+typedef void (*JingleAppHandle) (JingleAction action, gconstpointer data, LmMessageNode *node);
 typedef gboolean (*JingleAppHandleData) (gconstpointer data, const gchar *data2, guint len);
 
 typedef gconstpointer (*JingleTransportCheck) (JingleContent *cn, GError **err);
-typedef void (*JingleTransportHandle) (gconstpointer data, LmMessageNode *node);
+typedef void (*JingleTransportHandle) (JingleAction action, gconstpointer data, LmMessageNode *node);
 typedef gboolean (*JingleTransportCmp) (gconstpointer data1, gconstpointer data2);
 
 typedef struct {
--- a/jingle/send.c	Fri Jul 23 03:23:23 2010 +0200
+++ b/jingle/send.c	Fri Jul 23 04:50:57 2010 +0200
@@ -122,3 +122,24 @@
     lm_message_unref(accept.message);
   }
 }
+
+void jingle_send_session_initiate(JingleSession *js, const gchar *recipient)
+{
+  JingleNode initiate = {0};
+  JingleAckHandle *ackhandle;
+
+  initiate.action = JINGLE_SESSION_INITIATE;
+  initiate.sid = js->sid;
+  initiate.initiator = js->initiator;
+  initiate.content = NULL; // TODO
+  initiate.message = lm_message_from_jinglenode(&initiate, recipient);
+
+  if (initiate.message) {
+    ackhandle = g_new0(JingleAckHandle, 1);
+    ackhandle->callback = NULL;
+    ackhandle->user_data = NULL;
+    lm_connection_send_with_reply(lconnection, initiate.message,
+                                  jingle_new_ack_handler(ackhandle), NULL);
+    lm_message_unref(initiate.message);
+  }
+}
--- a/jingle/sessions.h	Fri Jul 23 03:23:23 2010 +0200
+++ b/jingle/sessions.h	Fri Jul 23 04:50:57 2010 +0200
@@ -17,7 +17,7 @@
 } SessionState;
 
 typedef struct {
-  JingleStatus  status;
+  JingleStatus status;
   gchar *sid;
   gchar *initiator;
   gchar *from;