Mercurial > pidgin
diff libpurple/protocols/jabber/si.c @ 25722:be762644486f
Actually close the assoiciated jsx when closing an IBB session.
This also ensures the file we're writing to is actually closes (this might
be what caused a truncated received file on Windows.).
Change g_fopen/g_fclose to fopen/fclose (these are glib 2.6+).
Some additional debug output
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Sat, 27 Sep 2008 19:39:17 +0000 |
parents | b4ec5481a67a |
children | daaabfcf5c2b |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/si.c Tue Sep 23 17:55:53 2008 +0000 +++ b/libpurple/protocols/jabber/si.c Sat Sep 27 19:39:17 2008 +0000 @@ -959,6 +959,7 @@ purple_xfer_end(xfer); } else { purple_xfer_set_completed(xfer, TRUE); + jabber_si_xfer_free(xfer); } } @@ -970,6 +971,7 @@ JabberSIXfer *jsx = (JabberSIXfer *) xfer->data; if (size <= purple_xfer_get_bytes_remaining(xfer)) { + purple_debug_info("jabber", "about to write %d bytes from IBB stream\n"); fwrite(data, size, 1, jsx->fp); purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) + size); purple_xfer_update_progress(xfer); @@ -1008,7 +1010,7 @@ jabber_si_xfer_ibb_error_cb); /* open the file to write to */ - jsx->fp = g_fopen(purple_xfer_get_local_filename(xfer), "w"); + jsx->fp = fopen(purple_xfer_get_local_filename(xfer), "w"); jsx->ibb_session = sess; @@ -1060,6 +1062,7 @@ /* close the session */ jabber_ibb_session_close(sess); purple_xfer_set_completed(xfer, TRUE); + jabber_si_xfer_free(xfer); } else { /* send more... */ jabber_si_xfer_ibb_send_data(sess); @@ -1075,7 +1078,7 @@ purple_xfer_start(xfer, 0, NULL, 0); purple_xfer_set_bytes_sent(xfer, 0); purple_xfer_update_progress(xfer); - jsx->fp = g_fopen(purple_xfer_get_local_filename(xfer), "r"); + jsx->fp = fopen(purple_xfer_get_local_filename(xfer), "r"); jabber_si_xfer_ibb_send_data(sess); } @@ -1255,7 +1258,7 @@ g_free(jsx); xfer->data = NULL; - purple_debug_info("jabber", "jabber_si_xfer_free(): freeing jsx %p", jsx); + purple_debug_info("jabber", "jabber_si_xfer_free(): freeing jsx %p\n", jsx); } static void jabber_si_xfer_cancel_send(PurpleXfer *xfer)