Recognize configuration for idlefolders
Mark this option as experimental and document its shortcomings in MANUAL.rst. This code was originally by James Bunton <jamesbunton@fastmail.fm>. Signed-off-by: Ethan Glasser-Camp <ethan@betacantrips.com> Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:

committed by
Nicolas Sebrecht

parent
89a5d25263
commit
52cefb582c
@ -43,7 +43,7 @@ class IMAPServer:
|
||||
username = None, password = None, hostname = None,
|
||||
port = None, ssl = 1, maxconnections = 1, tunnel = None,
|
||||
reference = '""', sslclientcert = None, sslclientkey = None,
|
||||
sslcacertfile= None):
|
||||
sslcacertfile = None, idlefolders = []):
|
||||
self.ui = getglobalui()
|
||||
self.reposname = reposname
|
||||
self.config = config
|
||||
@ -72,6 +72,7 @@ class IMAPServer:
|
||||
self.semaphore = BoundedSemaphore(self.maxconnections)
|
||||
self.connectionlock = Lock()
|
||||
self.reference = reference
|
||||
self.idlefolders = idlefolders
|
||||
self.gss_step = self.GSS_STATE_STEP
|
||||
self.gss_vc = None
|
||||
self.gssapi = False
|
||||
@ -386,6 +387,7 @@ class ConfigedIMAPServer(IMAPServer):
|
||||
sslclientkey = self.repos.getsslclientkey()
|
||||
sslcacertfile = self.repos.getsslcacertfile()
|
||||
reference = self.repos.getreference()
|
||||
idlefolders = self.repos.getidlefolders()
|
||||
server = None
|
||||
password = None
|
||||
|
||||
@ -397,6 +399,7 @@ class ConfigedIMAPServer(IMAPServer):
|
||||
IMAPServer.__init__(self, self.config, self.repos.getname(),
|
||||
tunnel = usetunnel,
|
||||
reference = reference,
|
||||
idlefolders = idlefolders,
|
||||
maxconnections = self.repos.getmaxconnections())
|
||||
else:
|
||||
if not password:
|
||||
@ -405,6 +408,7 @@ class ConfigedIMAPServer(IMAPServer):
|
||||
user, password, host, port, ssl,
|
||||
self.repos.getmaxconnections(),
|
||||
reference = reference,
|
||||
idlefolders = idlefolders,
|
||||
sslclientcert = sslclientcert,
|
||||
sslclientkey = sslclientkey,
|
||||
sslcacertfile = sslcacertfile)
|
||||
|
@ -79,9 +79,13 @@ class IMAPRepository(BaseRepository):
|
||||
self.imapserver.close()
|
||||
|
||||
def getholdconnectionopen(self):
|
||||
if self.getidlefolders():
|
||||
return 1
|
||||
return self.getconfboolean("holdconnectionopen", 0)
|
||||
|
||||
def getkeepalive(self):
|
||||
if self.getidlefolders():
|
||||
return 29*60
|
||||
return self.getconfint("keepalive", 0)
|
||||
|
||||
def getsep(self):
|
||||
@ -163,8 +167,14 @@ class IMAPRepository(BaseRepository):
|
||||
def getreference(self):
|
||||
return self.getconf('reference', '""')
|
||||
|
||||
def getidlefolders(self):
|
||||
localeval = self.localeval
|
||||
return localeval.eval(self.getconf('idlefolders', '[]'))
|
||||
|
||||
def getmaxconnections(self):
|
||||
return self.getconfint('maxconnections', 1)
|
||||
num1 = len(self.getidlefolders())
|
||||
num2 = self.getconfint('maxconnections', 1)
|
||||
return max(num1, num2)
|
||||
|
||||
def getexpunge(self):
|
||||
return self.getconfboolean('expunge', 1)
|
||||
|
Reference in New Issue
Block a user