modify send_session_initiate
authorNicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Mon, 09 Aug 2010 23:32:49 +0200
changeset 83 d5c5e9be53cb
parent 82 d629af652b80
child 84 cdff1771155d
modify send_session_initiate
jingle-filetransfer/filetransfer.c
jingle/jingle.c
jingle/send.c
jingle/sessions.c
jingle/sessions.h
--- a/jingle-filetransfer/filetransfer.c	Mon Aug 09 23:01:24 2010 +0200
+++ b/jingle-filetransfer/filetransfer.c	Mon Aug 09 23:32:49 2010 +0200
@@ -199,18 +199,18 @@
 {
   char **args = split_arg(arg, 1, 0);
   
-  if (!args[1]) {
+  if (!args[0]) {
     scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: give me a name!");
     return;
   }
   
-  if (!g_file_test(args[1], G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS)) {
+  if (!g_file_test(args[0], G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS)) {
     scr_LogPrint(LPRINT_LOGNORM, "File doesn't exist!");
     return;
   }
   
   scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: try to sent %s",
-               args[1]);
+               args[0]);
 
   {
     /*GChecksum *md5 = g_checksum_new(G_CHECKSUM_MD5);
@@ -227,16 +227,16 @@
     sess = session_new(sid, myjid, myjid, JINGLE_SESSION_OUTGOING);
     session_add_content(sess, "file", JINGLE_SESSION_STATE_PENDING);
 
-    if (g_stat(args[1], &fileinfo) != 0) {
+    if (g_stat(args[0], &fileinfo) != 0) {
       scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: unable to stat %s", args[1]);
       return;
     }
-    jft->desc = g_strdup(args[1]);
+    jft->desc = g_strdup(args[0]);
     jft->type = JINGLE_FT_OFFER;
-    jft->name = g_path_get_basename(args[1]);
+    jft->name = g_path_get_basename(args[0]);
     jft->date = fileinfo.st_mtime;
     jft->size = fileinfo.st_size;
-    jft->outfile = g_io_channel_new_file (args[1], "r", NULL);
+    jft->outfile = g_io_channel_new_file (args[0], "r", NULL);
     g_io_channel_set_encoding(jft->outfile, NULL, NULL);
     /*while (g_io_channel_read_chars(jft->outfile,
                                    (gchar*)data, 1024, &bytes_read, NULL)
--- a/jingle/jingle.c	Mon Aug 09 23:01:24 2010 +0200
+++ b/jingle/jingle.c	Mon Aug 09 23:32:49 2010 +0200
@@ -47,7 +47,6 @@
 static void  jingle_init(void);
 static void  jingle_uninit(void);
 static void lm_insert_jinglecontent(gpointer data, gpointer userdata);
-static void lm_insert_sessioncontent(gpointer data, gpointer userdata);
 
 
 static LmMessageHandler* jingle_iq_handler = NULL;
@@ -388,48 +387,6 @@
   lm_message_handler_unref(jingle_iq_handler);
 }
 
-LmMessage *lm_message_from_jinglesession(const JingleSession *js,
-                                         const gchar *to,
-                                         JingleAction action)
-{
-  LmMessage* m; 
-  LmMessageNode *jnode;
-  const gchar *actionstr;
-
-  m = lm_message_new_with_sub_type(to, LM_MESSAGE_TYPE_IQ,
-                                   LM_MESSAGE_SUB_TYPE_SET);
-  jnode = lm_message_node_add_child(m->node, "jingle", NULL);
-
-  if (actionstr = jingle_action_list[action].name)
-    lm_message_node_set_attribute(jnode, "action", actionstr);
-  else
-    return NULL;
-
-  if (js->sid)
-    lm_message_node_set_attribute(jnode, "sid", js->sid);
-  else
-    return NULL;
-
-  g_slist_foreach(js->content, lm_insert_sessioncontent, jnode);
-  return m;
-}
-
-static void lm_insert_sessioncontent(gpointer data, gpointer userdata)
-{
-  const gchar *xmlns;
-  JingleTransportFuncs *tfunc;
-  JingleAppFuncs *afunc;
-  SessionContent *content = (SessionContent*) data;
-  LmMessageNode *jnode = (LmMessageNode*) userdata;
-  LmMessageNode *node = lm_message_node_add_child(jnode, "content", NULL);
-                                                                 
-  if (content->name)
-    lm_message_node_set_attribute(node, "name", content->name);
-  
-  content->transfuncs->tomessage(content->description, node);
-
-  content->appfuncs->tomessage(content->transport, node);
-}
 
 LmMessage *lm_message_from_jinglenode(const JingleNode *jn, const gchar *to)
 {
--- a/jingle/send.c	Mon Aug 09 23:01:24 2010 +0200
+++ b/jingle/send.c	Mon Aug 09 23:32:49 2010 +0200
@@ -125,33 +125,17 @@
 
 void jingle_send_session_initiate(JingleSession *js)
 {
-  JingleNode initiate = {0};
   JingleAckHandle *ackhandle;
   GSList *listentry;
-  SessionContent *content;
-  JingleContent *jcontent;
+  
+  LmMessage* mess = lm_message_from_jinglesession(js, js->to, JINGLE_SESSION_INITIATE);
 
-  initiate.action = JINGLE_SESSION_INITIATE;
-  initiate.sid = js->sid;
-  initiate.initiator = js->from;
-  for(listentry = js->content; listentry; listentry = g_slist_next(listentry)) {
-    /*content = (SessionContent *)listentry->data;
-    jcontent = g_new0(JingleContent, 1);
-    jcontent->node = lm_message_node_add_child()
-    jcontent->creator = JINGLE_CREATOR_INITIATOR;
-    jcontent->name = content->name
-    tfunc->tomessage(, node);
-    jcontent->transport = 
-    initiate.content = g_slist_append(initiate.content, jcontent);*/
-  }
-  initiate.message = lm_message_from_jinglenode(&initiate, js->to);
-
-  if (initiate.message) {
+  if (mess) {
     ackhandle = g_new0(JingleAckHandle, 1);
     ackhandle->callback = NULL;
     ackhandle->user_data = NULL;
-    lm_connection_send_with_reply(lconnection, initiate.message,
+    lm_connection_send_with_reply(lconnection, mess,
                                   jingle_new_ack_handler(ackhandle), NULL);
-    lm_message_unref(initiate.message);
+    lm_message_unref(mess);
   }
 }
--- a/jingle/sessions.c	Mon Aug 09 23:01:24 2010 +0200
+++ b/jingle/sessions.c	Mon Aug 09 23:32:49 2010 +0200
@@ -28,6 +28,9 @@
 
 static GSList *sessions;
 
+static void lm_insert_sessioncontent(gpointer data, gpointer userdata);
+
+extern struct JingleActionList jingle_action_list[];
 
 /**
  * Create a new session and insert it in the linked list.
@@ -210,3 +213,47 @@
 
   jingle_send_session_initiate(sess, to);
 }
+
+LmMessage *lm_message_from_jinglesession(const JingleSession *js,
+                                         const gchar *to,
+                                         JingleAction action)
+{
+  LmMessage* m; 
+  LmMessageNode *jnode;
+  const gchar *actionstr;
+
+  m = lm_message_new_with_sub_type(to, LM_MESSAGE_TYPE_IQ,
+                                   LM_MESSAGE_SUB_TYPE_SET);
+  jnode = lm_message_node_add_child(m->node, "jingle", NULL);
+
+  if (actionstr = jingle_action_list[action].name)
+    lm_message_node_set_attribute(jnode, "action", actionstr);
+  else
+    return NULL;
+
+  if (js->sid)
+    lm_message_node_set_attribute(jnode, "sid", js->sid);
+  else
+    return NULL;
+
+  g_slist_foreach(js->content, lm_insert_sessioncontent, jnode);
+  return m;
+}
+
+static void lm_insert_sessioncontent(gpointer data, gpointer userdata)
+{
+  const gchar *xmlns;
+  JingleTransportFuncs *tfunc;
+  JingleAppFuncs *afunc;
+  SessionContent *content = (SessionContent*) data;
+  LmMessageNode *jnode = (LmMessageNode*) userdata;
+  LmMessageNode *node = lm_message_node_add_child(jnode, "content", NULL);
+                                                                 
+  if (content->name)
+    lm_message_node_set_attribute(node, "name", content->name);
+  
+  content->transfuncs->tomessage(content->description, node);
+
+  content->appfuncs->tomessage(content->transport, node);
+}
+
--- a/jingle/sessions.h	Mon Aug 09 23:01:24 2010 +0200
+++ b/jingle/sessions.h	Mon Aug 09 23:32:49 2010 +0200
@@ -95,5 +95,8 @@
 void jingle_handle_app(JingleSession *sess, const gchar *name,
                        const gchar *xmlns_app, gconstpointer app,
                        const gchar *to);
+LmMessage *lm_message_from_jinglesession(const JingleSession *js,
+                                         const gchar *to,
+                                         JingleAction action);
 
 #endif