diff src/ft.c @ 9788:1e9ecca6c97e

[gaim-migrate @ 10656] "ixes sending declines when we would decline a request to an MSN file xfer. Fixes accidentally having 2 xfers of the same file in the transfer dialog when sending through MSN and SILC. Fixes crash when cancelling MSN file transfers. Should fix crash when removing old MSN transfers from the xfer window in MSN. Fixes MSN crash when the remote side sends a decline after we've canceled locally." --Dave West committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Fri, 20 Aug 2004 03:44:46 +0000
parents 2356d2153c94
children 51a6a98d276b
line wrap: on
line diff
--- a/src/ft.c	Fri Aug 20 03:40:33 2004 +0000
+++ b/src/ft.c	Fri Aug 20 03:44:46 2004 +0000
@@ -77,10 +77,14 @@
 	if (ui_ops != NULL && ui_ops->destroy != NULL)
 		ui_ops->destroy(xfer);
 
-	g_free(xfer->who);
-	g_free(xfer->filename);
+	if( xfer->who != NULL )
+		g_free(xfer->who);
 
-	if (xfer->remote_ip != NULL) g_free(xfer->remote_ip);
+	if( xfer->filename != NULL )
+		g_free(xfer->filename);
+
+	if (xfer->remote_ip != NULL) 
+		g_free(xfer->remote_ip);
 
 	if (xfer->local_filename != NULL)
 		g_free(xfer->local_filename);
@@ -107,6 +111,15 @@
 		gaim_xfer_destroy(xfer);
 }
 
+static void
+gaim_xfer_set_status(GaimXfer *xfer, GaimXferStatusType status)
+{
+	g_return_if_fail(xfer != NULL);
+
+	xfer->status = status;
+}
+
+
 static void gaim_xfer_show_file_error(const char *filename)
 {
 	char *msg = NULL;
@@ -216,6 +229,7 @@
 {
 	GaimXfer *xfer = (GaimXfer *)user_data;
 
+  	gaim_xfer_set_status(xfer, GAIM_XFER_STATUS_CANCEL_LOCAL);
 	gaim_xfer_request_denied(xfer);
 }
 
@@ -233,6 +247,7 @@
 static int
 cancel_recv_cb(GaimXfer *xfer)
 {
+  	gaim_xfer_set_status(xfer, GAIM_XFER_STATUS_CANCEL_LOCAL);
 	gaim_xfer_request_denied(xfer);
 	gaim_xfer_unref(xfer);
 
@@ -500,14 +515,6 @@
 	return xfer->remote_port;
 }
 
-static void
-gaim_xfer_set_status(GaimXfer *xfer, GaimXferStatusType status)
-{
-	g_return_if_fail(xfer != NULL);
-
-	xfer->status = status;
-}
-
 void
 gaim_xfer_set_completed(GaimXfer *xfer, gboolean completed)
 {
@@ -925,7 +932,7 @@
 	gaim_request_close_with_handle(xfer);
 
 	msg = g_strdup_printf(_("%s canceled the transfer of %s"),
-	xfer->who, gaim_xfer_get_filename(xfer));
+					xfer->who, gaim_xfer_get_filename(xfer));
 	gaim_xfer_error(gaim_xfer_get_type(xfer), xfer->who, msg);
 	g_free(msg);