IBB: Create a Lm with a gconstpointer
authorNicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Tue, 20 Jul 2010 19:16:58 +0200
changeset 60 05184a1846d1
parent 59 69985ccda25a
child 61 c7879aae9e1d
IBB: Create a Lm with a gconstpointer
jingle-filetransfer/filetransfer.c
jingle-ibb/ibb.c
jingle/action-handlers.c
jingle/register.h
--- a/jingle-filetransfer/filetransfer.c	Tue Jul 20 12:49:17 2010 +0200
+++ b/jingle-filetransfer/filetransfer.c	Tue Jul 20 19:16:58 2010 +0200
@@ -66,8 +66,7 @@
   const gchar *datestr, *sizestr;
 
   node = lm_message_node_get_child(cn->description, "offer");
- scr_LogPrint(LPRINT_LOGNORM, "%s",
-                 lm_message_node_to_string(cn->description));
+ 
   if (!node) {
     g_set_error(err, JINGLE_CHECK_ERROR, JINGLE_CHECK_ERROR_MISSING,
                 "the offer element is missing");
--- a/jingle-ibb/ibb.c	Tue Jul 20 12:49:17 2010 +0200
+++ b/jingle-ibb/ibb.c	Tue Jul 20 19:16:58 2010 +0200
@@ -36,13 +36,16 @@
 static LmMessageHandler* jingle_ibb_handler = NULL;
 
 gconstpointer jingle_ibb_check(JingleContent *cn, GError **err);
+gboolean jingle_ibb_cmp(gconstpointer data1, gconstpointer data2);
+void jingle_ibb_handle(gconstpointer data, JingleContent *jc);
+
 static void jingle_ibb_init(void);
 static void jingle_ibb_uninit(void);
 
 
 const gchar *deps[] = { "jingle", NULL };
 
-JingleTransportFuncs funcs = {jingle_ibb_check, NULL};
+JingleTransportFuncs funcs = {jingle_ibb_check, jingle_ibb_handle, jingle_ibb_cmp};
 
 module_info_t  info_jingle_inbandbytestream = {
   .branch          = MCABBER_BRANCH,
@@ -142,6 +145,17 @@
   return 1;
 }
 
+void jingle_ibb_handle(gconstpointer data, JingleContent *jc)
+{
+  JingleIBB *jibb = (JingleIBB*) data;
+  gchar *bsize;
+  bsize = g_strdup_printf("%i", jibb->blocksize); 
+  LmMessageNode *node = lm_message_node_add_child(jc->node, "transport", NULL);
+  lm_message_node_set_attributes(node, "xmlns", NS_JINGLE_TRANSPORT_IBB,
+                                 "sid", jibb->sid,
+                                 "block-size", bsize);
+  g_free(bsize);
+}
 
 static void jingle_ibb_init(void)
 {
--- a/jingle/action-handlers.c	Tue Jul 20 12:49:17 2010 +0200
+++ b/jingle/action-handlers.c	Tue Jul 20 19:16:58 2010 +0200
@@ -266,9 +266,11 @@
   gchar *disp;
   
   // Make sure the request come from an user in our roster
-  if (!roster_find(jidtodisp(lm_message_get_from(jn->message)), jidsearch, 0)) {
+  disp = jidtodisp(lm_message_get_from(jn->message));
+  if (!roster_find(disp, jidsearch, 0)) {
     jingle_send_session_terminate(jn, "decline");
     jingle_free_jinglenode(jn);
+    g_free(disp);
     return;
   }
   
@@ -276,12 +278,14 @@
     scr_log_print(LPRINT_DEBUG, "jingle: One of the content element was invalid (%s)",
                   err->message);
     jingle_send_iq_error(jn->message, "cancel", "bad-request", NULL);
+    g_free(disp);
     return;
   }
 
   // a session-initiate message must contains at least one <content> element
   if (g_slist_length(jn->content) < 1) {
     jingle_send_iq_error(jn->message, "cancel", "bad-request", NULL);
+    g_free(disp);
     return;
   }
   
@@ -296,12 +300,14 @@
   }
   if (!valid_disposition) {
     jingle_send_iq_error(jn->message, "cancel", "bad-request", NULL);
+    g_free(disp);
     return;  
   }
   
   // if a session with the same sid already exists
   if (session_find(jn) != NULL) {
     jingle_send_iq_error(jn->message, "cancel", "unexpected-request", "out-of-order");
+    g_free(disp);
     return;
   }
 
@@ -311,7 +317,6 @@
   sbuf = g_string_new("");
   g_string_printf(sbuf, "Received an invitation for a jingle session from <%s>", lm_message_get_from(jn->message));
 
-  disp = jidtodisp(lm_message_get_from(jn->message));
   scr_WriteIncomingMessage(disp, sbuf->str, 0, HBB_PREFIX_INFO, 0);
   scr_LogPrint(LPRINT_LOGNORM, "%s", sbuf->str);
 
--- a/jingle/register.h	Tue Jul 20 12:49:17 2010 +0200
+++ b/jingle/register.h	Tue Jul 20 19:16:58 2010 +0200
@@ -23,8 +23,7 @@
 typedef gboolean (*JingleAppHandleData) (gconstpointer data, const gchar *data2, guint len);
 
 typedef gconstpointer (*JingleTransportCheck) (JingleContent *cn, GError **err);
-typedef void (*JingleTransportHandle) (JingleNode *jn, JingleContent *cn);
-typedef LmMessageNode* (*JingleTransportGetLM) (gconstpointer data);
+typedef void (*JingleTransportHandle) (gconstpointer data, JingleContent *cn);
 typedef gboolean (*JingleTransportCmp) (gconstpointer data1, gconstpointer data2);
 
 typedef struct {
@@ -45,8 +44,6 @@
   /* check if the transport of a JingleContent is correct */
   JingleAppCheck  check;
 
-  JingleTransportGetLM trans;
-
   /* */
   JingleAppHandle handle;