from offlineimap import imaplibutil, imaputil, threadutil
from offlineimap.ui import UIBase
from threading import *
-import thread, hmac, os
+import thread, hmac, os, time
import base64
from StringIO import StringIO
# might start seriously hurting performance ...
def read(self, size):
- if system() == 'Darwin':
+ if (system() == 'Darwin') and (size>0) :
read = 0
io = StringIO()
while read < size:
- data = self.file.read(min(size-read,100000))
+ data = imaplib.IMAP4.read (self, min(size-read,8192))
read += len(data)
io.write(data)
return io.getvalue()
else:
- return self.file.read(size)
+ return imaplib.IMAP4.read (self, size)
class UsefulIMAP4_SSL(UsefulIMAPMixIn, imaplibutil.WrappedIMAP4_SSL):
def open(self, host = '', port = imaplib.IMAP4_SSL_PORT):
# connexion.
def read(self, size):
- if system() == 'Darwin':
+ if (system() == 'Darwin') and (size>0) :
read = 0
io = StringIO()
while read < size:
- data = self.sslobj.read(min(size-read,100000))
+ data = imaplibutil.WrappedIMAP4_SSL.read (self, min(size-read,8192))
read += len(data)
io.write(data)
return io.getvalue()
else:
- return self.sslobj.read(size)
+ return imaplibutil.WrappedIMAP4_SSL.read (self,size)
class UsefulIMAP4_Tunnel(UsefulIMAPMixIn, imaplibutil.IMAP4_Tunnel): pass
def __init__(self, config, reposname,
username = None, password = None, hostname = None,
port = None, ssl = 1, maxconnections = 1, tunnel = None,
- reference = '""'):
+ reference = '""', sslclientcert = None, sslclientkey = None):
self.reposname = reposname
self.config = config
self.username = username
self.tunnel = tunnel
self.port = port
self.usessl = ssl
+ self.sslclientcert = sslclientcert
+ self.sslclientkey = sslclientkey
self.delim = None
self.root = None
if port == None:
success = 1
elif self.usessl:
UIBase.getglobalui().connecting(self.hostname, self.port)
- imapobj = UsefulIMAP4_SSL(self.hostname, self.port)
+ imapobj = UsefulIMAP4_SSL(self.hostname, self.port,
+ self.sslclientkey, self.sslclientcert)
else:
UIBase.getglobalui().connecting(self.hostname, self.port)
imapobj = UsefulIMAP4(self.hostname, self.port)
ui.debug('imap', 'keepalive thread started')
while 1:
ui.debug('imap', 'keepalive: top of loop')
- event.wait(timeout)
+ time.sleep(timeout)
ui.debug('imap', 'keepalive: after wait')
if event.isSet():
ui.debug('imap', 'keepalive: event is set; exiting')
user = self.repos.getuser()
port = self.repos.getport()
ssl = self.repos.getssl()
+ sslclientcert = self.repos.getsslclientcert()
+ sslclientkey = self.repos.getsslclientkey()
reference = self.repos.getreference()
server = None
password = None
IMAPServer.__init__(self, self.config, self.repos.getname(),
user, password, host, port, ssl,
self.repos.getmaxconnections(),
- reference = reference)
+ reference = reference,
+ sslclientcert = sslclientcert,
+ sslclientkey = sslclientkey)