jingle-filetransfer/filetransfer.c
changeset 123 58bd57666ef9
parent 120 3e2085a44a5c
child 124 7773e8147c29
--- a/jingle-filetransfer/filetransfer.c	Sun Aug 15 00:51:24 2010 +0200
+++ b/jingle-filetransfer/filetransfer.c	Sun Aug 15 01:09:48 2010 +0200
@@ -48,8 +48,8 @@
 gboolean jingle_ft_handle(JingleAction action, gconstpointer data, LmMessageNode *node);
 void jingle_ft_tomessage(gconstpointer data, LmMessageNode *node);
 gboolean jingle_ft_handle_data(gconstpointer data, const gchar *data2, guint len);
-void jingle_ft_start(session_content *sc, gsize size);
-void jingle_ft_send(session_content *sc, gsize size);
+void jingle_ft_start(session_content *sc);
+void jingle_ft_send(session_content *sc);
 void jingle_ft_stop(gconstpointer data);
 
 static gboolean is_md5_hash(const gchar *hash);
@@ -358,10 +358,10 @@
   lm_message_unref(r);
 }
 
-void jingle_ft_send(session_content *sc, gsize size)
+void jingle_ft_send(session_content *sc)
 {
   JingleFT *jft;
-  gchar *buf = g_new0(gchar, size);
+  gchar buf[JINGLE_FT_SIZE_READ];
   gsize read;
   GIOStatus status;
   int count = 0;
@@ -378,7 +378,7 @@
   
   do {
     count++;
-    status = g_io_channel_read_chars(jft->outfile, (gchar*)buf, size, &read, NULL);
+    status = g_io_channel_read_chars(jft->outfile, (gchar*)buf, JINGLE_FT_SIZE_READ, &read, NULL);
   } while (status == G_IO_STATUS_AGAIN && count < 10);
   
   if (status == G_IO_STATUS_AGAIN) {
@@ -400,6 +400,7 @@
   }
   
   if (status == G_IO_STATUS_EOF) {
+    handle_app_data(sc->sid, sc->from, sc->name, NULL, 0);
     scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: transfer finish (%s)", jft->name);
     jft->hash = g_strdup(g_checksum_get_string(jft->md5));
     // Call a function to say state is ended
@@ -415,7 +416,7 @@
   }
 }
 
-void jingle_ft_start(session_content *sc, gsize size)
+void jingle_ft_start(session_content *sc)
 {
   JingleFT *jft;
   
@@ -434,7 +435,7 @@
   scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: Transfer start (%s)",
                jft->name);
 
-  sc2->appfuncs->send(sc, size);
+  sc2->appfuncs->send(sc);
 }
 
 // When we got a session-terminate