aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy/empathy-tp-file.c
diff options
context:
space:
mode:
Diffstat (limited to 'libempathy/empathy-tp-file.c')
-rw-r--r--libempathy/empathy-tp-file.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libempathy/empathy-tp-file.c b/libempathy/empathy-tp-file.c
index 0d276818b..03dfb7875 100644
--- a/libempathy/empathy-tp-file.c
+++ b/libempathy/empathy-tp-file.c
@@ -98,6 +98,8 @@ typedef struct {
EmpathyTpFileOperationCallback op_callback;
gpointer op_user_data;
+ gboolean is_closed;
+
gboolean dispose_run;
} EmpathyTpFilePriv;
@@ -160,6 +162,11 @@ ft_operation_close_clean (EmpathyTpFile *tp_file)
DEBUG ("FT operation close clean");
+ if (priv->is_closed)
+ return;
+ else
+ priv->is_closed = TRUE;
+
if (priv->op_callback)
priv->op_callback (tp_file, NULL, priv->op_user_data);
}
@@ -172,6 +179,11 @@ ft_operation_close_with_error (EmpathyTpFile *tp_file,
DEBUG ("FT operation close with error %s", error->message);
+ if (priv->is_closed)
+ return;
+ else
+ priv->is_closed = TRUE;
+
/* close the channel if it's not cancelled already */
if (priv->state != TP_FILE_TRANSFER_STATE_CANCELLED)
empathy_tp_file_cancel (tp_file);