static void modest_mail_operation_notify_end (ModestMailOperation *self);
+static gboolean did_a_cancel = FALSE;
+
enum _ModestMailOperationSignals
{
PROGRESS_CHANGED_SIGNAL,
/* cancel current operation in account */
tny_account_cancel (priv->account);
+ did_a_cancel = TRUE;
+
/* Set new status */
priv->status = MODEST_MAIL_OPERATION_STATUS_CANCELED;
/* Refresh folders */
new_headers = g_ptr_array_new ();
iter = tny_list_create_iterator (all_folders);
- while (!tny_iterator_is_done (iter) && !priv->error) {
+
+ while (!tny_iterator_is_done (iter) && !priv->error && !did_a_cancel) {
InternalFolderObserver *observer;
TnyFolderStore *folder = TNY_FOLDER_STORE (tny_iterator_get_current (iter));
g_object_unref (G_OBJECT (folder));
tny_iterator_next (iter);
}
+
+ did_a_cancel = FALSE;
+
g_object_unref (G_OBJECT (iter));
g_source_remove (timeout);