>From 81205e3bb3bc04008b9473a71b90ec9a0612762c Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton <[email protected]> Date: Mon, 19 Dec 2016 05:29:24 +0000 Subject: [PATCH] add repository retrycount option
Signed-off-by: Luke Kenneth Casson Leighton <[email protected]> --- offlineimap.conf | 21 +++++++++++++++++++++ offlineimap/folder/Gmail.py | 2 +- offlineimap/folder/IMAP.py | 5 ++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/offlineimap.conf b/offlineimap.conf index 4df674b..2813061 100644 --- a/offlineimap.conf +++ b/offlineimap.conf @@ -1272,6 +1272,27 @@ remoteuser = username # This option stands in the [Repository RemoteExample] section. # +# Operating under extreme network conditions (China) network connectivity +# especially for SSL can be so bad and so slow that absolutely every +# possible kind of connectivity error that can occur does occur. +# +# Rather than have offlineimap exit on errors it may be preferable +# to have it simply retry connections dozens of times. The alternative +# is to restart offlineimap in a constant loop, which may involve using +# significant CPU cycles (if the repository is large) to load up the +# UID database again. +# +# This option is best utilised in combination with socktimeout, which +# catches instances of interference by e.g. the GFW at the TCP layer, +# as well as China ISPs simply not coping. +# +# Default value: retrycount = 2 +# +#retrycount = 2 + + +# This option stands in the [Repository RemoteExample] section. +# # If offlineiamp is having troubles to download some UIDS, it's possible to get # them ignored in a list. This only ignore the download. # diff --git a/offlineimap/folder/Gmail.py b/offlineimap/folder/Gmail.py index 31eaeb3..dc594d1 100644 --- a/offlineimap/folder/Gmail.py +++ b/offlineimap/folder/Gmail.py @@ -71,7 +71,7 @@ class GmailFolder(IMAPFolder): (probably severity MESSAGE) if e.g. no message with this UID could be found. """ - data = self._fetch_from_imap(str(uid), 2) + data = self._fetch_from_imap(str(uid), self.retrycount) # data looks now e.g. #[('320 (X-GM-LABELS (...) UID 17061 BODY[] {2565}','msgbody....')] diff --git a/offlineimap/folder/IMAP.py b/offlineimap/folder/IMAP.py index f8fcf7b..6587b8a 100644 --- a/offlineimap/folder/IMAP.py +++ b/offlineimap/folder/IMAP.py @@ -55,6 +55,9 @@ class IMAPFolder(BaseFolder): # self.ui is set in BaseFolder. self.imap_query = ['BODY.PEEK[]'] + # number of times to retry fetching messages + self.retrycount = int(self.repository.getconf('retry', '2')) + fh_conf = self.repository.account.getconf('filterheaders', '') self.filterheaders = [h for h in re.split(r'\s*,\s*', fh_conf) if h] @@ -305,7 +308,7 @@ class IMAPFolder(BaseFolder): this UID could be found. """ - data = self._fetch_from_imap(str(uid), 2) + data = self._fetch_from_imap(str(uid), self.retrycount) # Data looks now e.g. # [('320 (UID 17061 BODY[] {2565}','msgbody....')] -- 2.8.1 _______________________________________________ OfflineIMAP-project mailing list: [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/offlineimap-project OfflineIMAP homepages: - https://github.com/OfflineIMAP - http://offlineimap.org
