learn repository retrycount configuration option

Allow retrying the download of messages more than twice.

Signed-off-by: Luke Kenneth Casson Leighton <lkcl@lkcl.net>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
lkcl 2016-12-19 05:31:35 +00:00 committed by Nicolas Sebrecht
parent dda27e0962
commit dab5737265
3 changed files with 25 additions and 2 deletions

View File

@ -1270,6 +1270,26 @@ remoteuser = username
#"cvlc --play-and-stop --play-and-exit /path/to/sound/file.mp3 > /dev/null 2>&1")
# This option stands in the [Repository RemoteExample] section. [TESTING]
#
# 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 fetching of messages 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

View File

@ -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....')]

View File

@ -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 = self.repository.getconfint('retrycount', 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....')]