Fix empty file in pidgin after transfer

Fetch local filename before calling purple_xfer_end to avoid that the local filename contains bogus.
This commit is contained in:
majn 2015-10-18 01:21:18 +02:00
parent c2873d2e3f
commit 3824eae025

View file

@ -69,6 +69,7 @@ static char *tgp_strdup_determine_filename (const char *mime, const char *captio
static void tgprpl_xfer_recv_on_finished (struct tgl_state *TLS, void *_data, int success, const char *filename) {
debug ("tgprpl_xfer_recv_on_finished()");
struct tgp_xfer_send_data *data = _data;
char *selected = g_strdup(purple_xfer_get_local_filename (data->xfer));
if (success) {
if (!data->done) {
@ -77,10 +78,6 @@ static void tgprpl_xfer_recv_on_finished (struct tgl_state *TLS, void *_data, in
purple_xfer_set_completed (data->xfer, TRUE);
purple_xfer_end (data->xfer);
}
g_unlink (purple_xfer_get_local_filename (data->xfer));
g_rename (filename, purple_xfer_get_local_filename (data->xfer));
} else {
tgp_notify_on_error_gw (TLS, NULL, success);
failure ("ERROR xfer failed");
@ -88,6 +85,11 @@ static void tgprpl_xfer_recv_on_finished (struct tgl_state *TLS, void *_data, in
data->xfer->data = NULL;
tgprpl_xfer_free_data (data);
debug ("moving transferred file from tgl directory %s to selected target %s", selected, filename);
g_unlink (selected);
g_rename (filename, selected);
g_free (selected);
}
static void tgprpl_xfer_on_finished (struct tgl_state *TLS, void *_data, int success, struct tgl_message *M) {