talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 453d869b357e28d58b31466ac561aa841dff7dda
parent abde28bea55cd55bc575b7403307483a4ff9d75e
Author: Paul <paul@claws-mail.org>
Date:   Wed,  9 Aug 2023 10:15:22 +0100

fix bug 4618, 'Rate limit by remote breaks queued/marked actions (Delete/Move)'

patch by Charles Huber

Diffstat:
MAUTHORS | 1+
Msrc/account.c | 3++-
Msrc/etpan/imap-thread.h | 4+---
Msrc/gtk/authors.h | 1+
Msrc/imap.c | 4++--
Msrc/prefs_account.c | 27++++++++++++++++++++++++++-
Msrc/prefs_account.h | 3++-
7 files changed, 35 insertions(+), 8 deletions(-)

diff --git a/AUTHORS b/AUTHORS @@ -346,3 +346,4 @@ contributors (in addition to the above; based on Changelog) Viatrix Roland Haas Sakaguchi Takayuki + Charles Huber diff --git a/src/account.c b/src/account.c @@ -1,6 +1,6 @@ /* * Claws Mail -- a GTK based, lightweight, and fast e-mail client - * Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto + * Copyright (C) 1999-2023 the Claws Mail team and Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -984,6 +984,7 @@ static void account_clone(GtkWidget *widget, gpointer data) ac_clon->autocheck_timer = 0; ACP_FASSIGN(imap_auth_type); + ACP_FASSIGN(imap_batch_size); /* send */ ACP_FASSIGN(gen_msgid); diff --git a/src/etpan/imap-thread.h b/src/etpan/imap-thread.h @@ -1,6 +1,6 @@ /* * Claws Mail -- a GTK based, lightweight, and fast e-mail client - * Copyright (C) 2005-2012 DINH Viet Hoa and the Claws Mail team + * Copyright (C) 2005-2023 the Claws Mail team and DINH Viet Hoa * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,8 +24,6 @@ #include <libetpan/libetpan.h> #include "folder.h" -#define IMAP_SET_MAX_COUNT 500 - typedef enum { IMAP_FLAG_SEEN = 1 << 0, diff --git a/src/gtk/authors.h b/src/gtk/authors.h @@ -176,6 +176,7 @@ static char *CONTRIBS_LIST[] = { "Marc Hoper", "Michihide Hotta", "Shawn Houston", +"Charles Huber", "Michael Hughes", "Richard Hughes", "Arthur Huillet", diff --git a/src/imap.c b/src/imap.c @@ -1,6 +1,6 @@ /* * Claws Mail -- a GTK based, lightweight, and fast e-mail client - * Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto + * Copyright (C) 1999-2023 the Claws Mail team and Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -795,7 +795,6 @@ static void imap_folder_init(Folder *folder, const gchar *name, const gchar *path) { folder_remote_folder_init((Folder *)folder, name, path); - IMAP_FOLDER(folder)->max_set_size = IMAP_SET_MAX_COUNT; IMAP_FOLDER(folder)->search_charset_supported = TRUE; IMAP_FOLDER(folder)->search_charset = g_strdup(conv_get_locale_charset_str_no_utf8()); } @@ -1251,6 +1250,7 @@ static IMAPSession *imap_session_new(Folder * folder, #endif imap_init(folder); + IMAP_FOLDER(folder)->max_set_size = account->imap_batch_size; buf = g_strdup_printf(_("Account '%s': Connecting to IMAP server: %s:%d..."), folder->account->account_name, folder->account->recv_server, port); diff --git a/src/prefs_account.c b/src/prefs_account.c @@ -1,6 +1,6 @@ /* * Claws Mail -- a GTK based, lightweight, and fast e-mail client - * Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto + * Copyright (C) 1999-2023 the Claws Mail team and Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -185,6 +185,7 @@ typedef struct ReceivePage GtkWidget *imapdir_entry; GtkWidget *subsonly_checkbtn; GtkWidget *low_bandwidth_checkbtn; + GtkWidget *imap_batch_size_spinbtn; GtkWidget *frame_maxarticle; GtkWidget *maxarticle_label; @@ -609,6 +610,10 @@ static PrefParam receive_param[] = { &receive_page.low_bandwidth_checkbtn, prefs_set_data_from_toggle, prefs_set_toggle}, + {"imap_batch_size", "500", &tmp_ac_prefs.imap_batch_size, P_INT, + &receive_page.imap_batch_size_spinbtn, + prefs_set_data_from_spinbtn, prefs_set_spinbtn}, + {"autochk_use_default", "TRUE", &tmp_ac_prefs.autochk_use_default, P_BOOL, &receive_page.autochk_use_default_checkbtn, prefs_set_data_from_toggle, prefs_set_toggle}, @@ -1567,6 +1572,7 @@ static void receive_create_widget_func(PrefsPage * _page, GtkWidget *imapdir_entry; GtkWidget *subsonly_checkbtn; GtkWidget *low_bandwidth_checkbtn; + GtkWidget *imap_batch_size_spinbtn; GtkWidget *local_frame; GtkWidget *local_vbox; GtkWidget *local_hbox; @@ -1838,6 +1844,19 @@ static void receive_create_widget_func(PrefsPage * _page, gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 4); + label = gtk_label_new(_("Batch size")); + gtk_widget_show (label); + gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 0); + + imap_batch_size_spinbtn = gtk_spin_button_new_with_range(0, 1000000, 1); + gtk_widget_set_size_request(imap_batch_size_spinbtn, 64, -1); + gtk_widget_show (imap_batch_size_spinbtn); + gtk_box_pack_start(GTK_BOX(hbox1), imap_batch_size_spinbtn, FALSE, FALSE, 0); + + hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); + gtk_widget_show (hbox1); + gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 4); + /* Auto-checking */ vbox4 = gtkut_get_options_frame(vbox1, &frame, _("Automatic checking")); @@ -1932,6 +1951,7 @@ static void receive_create_widget_func(PrefsPage * _page, page->imapdir_entry = imapdir_entry; page->subsonly_checkbtn = subsonly_checkbtn; page->low_bandwidth_checkbtn = low_bandwidth_checkbtn; + page->imap_batch_size_spinbtn = imap_batch_size_spinbtn; page->local_frame = local_frame; page->local_inbox_label = local_inbox_label; page->local_inbox_entry = local_inbox_entry; @@ -5480,6 +5500,7 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) gtk_widget_hide(receive_page.imapdir_entry); gtk_widget_hide(receive_page.subsonly_checkbtn); gtk_widget_hide(receive_page.low_bandwidth_checkbtn); + gtk_widget_hide(receive_page.imap_batch_size_spinbtn); break; case A_LOCAL: gtk_widget_show(send_page.msgid_checkbtn); @@ -5563,6 +5584,7 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) gtk_widget_hide(receive_page.imapdir_entry); gtk_widget_hide(receive_page.subsonly_checkbtn); gtk_widget_hide(receive_page.low_bandwidth_checkbtn); + gtk_widget_hide(receive_page.imap_batch_size_spinbtn); break; case A_IMAP4: #ifndef HAVE_LIBETPAN @@ -5655,6 +5677,7 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) gtk_widget_show(receive_page.imapdir_entry); gtk_widget_show(receive_page.subsonly_checkbtn); gtk_widget_show(receive_page.low_bandwidth_checkbtn); + gtk_widget_show(receive_page.imap_batch_size_spinbtn); break; case A_NONE: gtk_widget_show(send_page.msgid_checkbtn); @@ -5736,6 +5759,7 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) gtk_widget_hide(receive_page.imapdir_entry); gtk_widget_hide(receive_page.subsonly_checkbtn); gtk_widget_hide(receive_page.low_bandwidth_checkbtn); + gtk_widget_hide(receive_page.imap_batch_size_spinbtn); break; case A_POP3: /* continue to default: */ @@ -5824,6 +5848,7 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) gtk_widget_hide(receive_page.imapdir_entry); gtk_widget_hide(receive_page.subsonly_checkbtn); gtk_widget_hide(receive_page.low_bandwidth_checkbtn); + gtk_widget_hide(receive_page.imap_batch_size_spinbtn); break; } diff --git a/src/prefs_account.h b/src/prefs_account.h @@ -1,6 +1,6 @@ /* * Claws Mail -- a GTK based, lightweight, and fast e-mail client - * Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto + * Copyright (C) 1999-2023 the Claws Mail team and Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -117,6 +117,7 @@ struct _PrefsAccount guint autocheck_timer; gint imap_auth_type; + guint imap_batch_size; gboolean receive_in_progress;