JIBB: funcs are now static
authorNicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Sun, 15 Aug 2010 02:46:34 +0200
changeset 124 7773e8147c29
parent 123 58bd57666ef9
child 125 3b640eb09fbd
JIBB: funcs are now static
jingle-filetransfer/filetransfer.c
jingle-ibb/ibb.c
jingle-ibb/ibb.h
--- a/jingle-filetransfer/filetransfer.c	Sun Aug 15 01:09:48 2010 +0200
+++ b/jingle-filetransfer/filetransfer.c	Sun Aug 15 02:46:34 2010 +0200
@@ -396,7 +396,6 @@
     g_checksum_update(jft->md5, (guchar*)buf, read);
     // Call a handle in jingle who will call the trans
     handle_app_data(sc->sid, sc->from, sc->name, buf, read);
-    g_free(buf);
   }
   
   if (status == G_IO_STATUS_EOF) {
--- a/jingle-ibb/ibb.c	Sun Aug 15 01:09:48 2010 +0200
+++ b/jingle-ibb/ibb.c	Sun Aug 15 02:46:34 2010 +0200
@@ -40,13 +40,13 @@
 
 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_tomessage(gconstpointer data, LmMessageNode *node);
-const gchar* jingle_ibb_xmlns(void);
-gconstpointer jingle_ibb_new(void);
-void jingle_ibb_send(session_content *sc, gconstpointer data, gchar *buf, gsize size);
-void jingle_ibb_end(session_content *sc, gconstpointer data);
+static gconstpointer check(JingleContent *cn, GError **err);
+static gboolean cmp(gconstpointer data1, gconstpointer data2);
+static void tomessage(gconstpointer data, LmMessageNode *node);
+static const gchar* xmlns(void);
+static gconstpointer new(void);
+static void send(session_content *sc, gconstpointer data, gchar *buf, gsize size);
+static void end(session_content *sc, gconstpointer data);
 static void _send_internal(session_content *sc, const gchar *to, gchar *buf,
                            gsize size, const gchar *sid, gint64 *seq);
 
@@ -59,13 +59,13 @@
 const gchar *deps[] = { "jingle", NULL };
 
 static JingleTransportFuncs funcs = {
-  jingle_ibb_xmlns,
-  jingle_ibb_check,
-  jingle_ibb_tomessage,
-  jingle_ibb_cmp,
-  jingle_ibb_new,
-  jingle_ibb_send,
-  jingle_ibb_end
+  .xmlns     = xmlns,
+  .check     = check,
+  .tomessage = tomessage,
+  .cmp       = cmp,
+  .new       = new,
+  .send      = send,
+  .end       = end
 };
 
 module_info_t  info_jingle_inbandbytestream = {
@@ -80,12 +80,12 @@
 };
 
 
-const gchar* jingle_ibb_xmlns(void)
+static const gchar* xmlns(void)
 {
   return NS_JINGLE_TRANSPORT_IBB;
 }
 
-gconstpointer jingle_ibb_check(JingleContent *cn, GError **err)
+static gconstpointer check(JingleContent *cn, GError **err)
 {
   JingleIBB *ibb = NULL;
   LmMessageNode *node = cn->transport;
@@ -155,7 +155,7 @@
 }
 
 
-gboolean jingle_ibb_cmp(gconstpointer data1, gconstpointer data2)
+static gboolean cmp(gconstpointer data1, gconstpointer data2)
 {
   const JingleIBB *ibb1 = data1, *ibb2 = data2;
   if(g_strcmp0(ibb1->sid, ibb2->sid))
@@ -177,7 +177,7 @@
   return sid;
 }
 
-gconstpointer jingle_ibb_new(void)
+static gconstpointer new(void)
 {
   JingleIBB *ibb = g_new0(JingleIBB, 1);
   ibb->blocksize = IBB_BLOCK_SIZE_MAX;
@@ -195,7 +195,7 @@
   return 1;
 }
 
-void jingle_ibb_tomessage(gconstpointer data, LmMessageNode *node)
+static void tomessage(gconstpointer data, LmMessageNode *node)
 {
   JingleIBB *jibb = (JingleIBB*) data;
   gchar *bsize = g_strdup_printf("%i", jibb->blocksize);
@@ -216,7 +216,13 @@
 {
   // TODO: check the sub type (error ??)
   session_content *sc = (session_content *)data;
+  
   JingleSession *sess = session_find_by_sid(sc->sid, sc->from);
+  
+  // If there is no more session, maybe it's finish
+  if (sess == NULL)
+    return;
+  
   SessionContent *sc2 = session_find_sessioncontent(sess, sc->name);
 
   JingleIBB *jibb = (JingleIBB *)sc2->transport;
@@ -226,7 +232,7 @@
     gchar *buf = g_memdup(jibb->buf, jibb->blocksize);
     jibb->dataleft-=jibb->blocksize;
     g_memmove(jibb->buf, jibb->buf+jibb->blocksize, jibb->dataleft);
-    _send_internal(sc, sess->to, buf, jibb->blocksize, sess->sid, &jibb->seq);
+    _send_internal(sc, sess->to, buf, jibb->blocksize, jibb->sid, &jibb->seq);
     g_free(buf);
   } else { // ask for more data
     handle_trans_next(sc);
@@ -266,7 +272,7 @@
   g_free(strseq);
 }
 
-void jingle_ibb_send(session_content *sc, gconstpointer data, gchar *buf,
+static void send(session_content *sc, gconstpointer data, gchar *buf,
                      gsize size)
 {
   JingleIBB *jibb = (JingleIBB*)data;
@@ -297,20 +303,20 @@
   
     g_memmove(jibb->buf, jibb->buf+jibb->blocksize, jibb->dataleft);
   
-    _send_internal(sc, sess->to, buffer, jibb->blocksize, sess->sid,
+    _send_internal(sc, sess->to, buffer, jibb->blocksize, jibb->sid,
                    &jibb->seq);
   
-    g_free(buf);
+    g_free(buffer);
   }
 }
 
-void jingle_ibb_end(session_content *sc, gconstpointer data)
+static void end(session_content *sc, gconstpointer data)
 {
   JingleIBB *jibb = (JingleIBB*)data;
   JingleSession *sess = session_find_by_sid(sc->sid, sc->from);
   
   if (jibb->dataleft > 0) {
-    _send_internal(sc, sess->to, jibb->buf, jibb->dataleft, sess->sid,
+    _send_internal(sc, sess->to, jibb->buf, jibb->dataleft, jibb->sid,
                    &jibb->seq);
   }
   
--- a/jingle-ibb/ibb.h	Sun Aug 15 01:09:48 2010 +0200
+++ b/jingle-ibb/ibb.h	Sun Aug 15 02:46:34 2010 +0200
@@ -4,7 +4,7 @@
 #define NS_JINGLE_TRANSPORT_IBB "urn:xmpp:jingle:transports:ibb:0"
 #define NS_TRANSPORT_IBB "http://jabber.org/protocol/ibb"
 
-#define IBB_BLOCK_SIZE_MAX 2048
+#define IBB_BLOCK_SIZE_MAX 8192
 
 typedef struct {
   /* Size of the blocks */