#define TEMP_FOLDER "TEMP_FOLDER"
#define PROCESSING_FOLDER_ITEM "processing"
-static FolderItem *processing_folder_item;
-
-static void folder_create_processing_folder(void)
+static FolderItem *folder_create_processing_folder(int account_id)
{
Folder *processing_folder;
+ FolderItem *processing_folder_item;
gchar *tmpname;
+ gchar *processing_folder_item_name = NULL;
+
+ processing_folder_item_name = g_strdup_printf("%s-%d", PROCESSING_FOLDER_ITEM, account_id);
+
if ((processing_folder = folder_find_from_name(TEMP_FOLDER, mh_get_class())) == NULL) {
gchar *tmppath;
this. */
if (!is_relative_filename(LOCAL_FOLDER(processing_folder)->rootpath))
tmpname = g_strconcat(LOCAL_FOLDER(processing_folder)->rootpath,
- G_DIR_SEPARATOR_S, PROCESSING_FOLDER_ITEM,
+ G_DIR_SEPARATOR_S,
+ processing_folder_item_name,
NULL);
else
tmpname = g_strconcat(get_home_dir(), G_DIR_SEPARATOR_S,
LOCAL_FOLDER(processing_folder)->rootpath,
- G_DIR_SEPARATOR_S, PROCESSING_FOLDER_ITEM,
+ G_DIR_SEPARATOR_S,
+ processing_folder_item_name,
NULL);
if (!is_dir_exist(tmpname)) {
debug_print("*TMP* creating %s\n", tmpname);
processing_folder_item = processing_folder->klass->create_folder(processing_folder,
processing_folder->node->data,
- PROCESSING_FOLDER_ITEM);
+ processing_folder_item_name);
} else {
debug_print("*TMP* already created\n");
- processing_folder_item = folder_item_new(processing_folder, PROCESSING_FOLDER_ITEM, PROCESSING_FOLDER_ITEM);
+ processing_folder_item = folder_item_new(processing_folder, processing_folder_item_name, processing_folder_item_name);
g_assert(processing_folder_item);
folder_item_append(processing_folder->node->data, processing_folder_item);
}
+ g_free(processing_folder_item_name);
g_assert(processing_folder_item != NULL);
g_free(tmpname);
+
+ return(processing_folder_item);
}
-FolderItem *folder_get_default_processing(void)
+FolderItem *folder_get_default_processing(int account_id)
{
- if (!processing_folder_item) {
- folder_create_processing_folder();
- }
- return processing_folder_item;
+ return folder_create_processing_folder(account_id);
}
/* folder_persist_prefs_new() - return hash table with persistent
if (inc_lock_count) return 0;
+ if (account->receive_in_progress) return 0;
+
if (prefs_common.work_offline &&
!inc_offline_should_override(TRUE,
_("Claws Mail needs network access in order "
PrefsAccount *account = list->data;
if (account->recv_at_getall) {
- session = inc_session_new(account);
- if (session)
- queue_list = g_list_append(queue_list, session);
+ if (!(account->receive_in_progress)) {
+ session = inc_session_new(account);
+ if (session)
+ queue_list = g_list_append(queue_list, session);
+ }
}
}
inbox = folder_get_default_inbox();
/* get list of messages in processing */
- processing = folder_get_default_processing();
+ processing = folder_get_default_processing(pop3_session->ac_prefs->account_id);
folder_item_scan(processing);
msglist = folder_item_get_msg_list(processing);
}
/* CLAWS: claws uses a global .processing folder for the filtering. */
- dropfolder = folder_get_default_processing();
+ dropfolder = folder_get_default_processing(session->ac_prefs->account_id);
/* add msg file to drop folder */
if ((msgnum = folder_item_add_msg(
cm_return_val_if_fail(account != NULL, NULL);
+ account->receive_in_progress = TRUE;
+
session = g_new0(Pop3Session, 1);
session_init(SESSION(session), account, FALSE);
g_free(pop3_session->user);
g_free(pop3_session->pass);
g_free(pop3_session->error_msg);
+
+ pop3_session->ac_prefs->receive_in_progress = FALSE;
}
static void pop3_get_uidl_table(PrefsAccount *ac_prefs, Pop3Session *session)