Iain MacKay <[EMAIL PROTECTED]> added the comment:

Knowing that the large read provokes the problem enables one to write
this simple workaround by subclassing IMAP4 without patching the library:

maxRead = 1000000
class MySSL (imaplib.IMAP4_SSL):
  def read (self, n):
    #print "..Attempting to read %d bytes" % n
      if n <= maxRead:
        return imaplib.IMAP4_SSL.read (self, n)
      else:
        soFar = 0
        result = ""
        while soFar < n:
          thisFragmentSize = min(maxRead, n-soFar)
          #print "..Reading fragment size %s" % thisFragmentSize
          fragment =\
            imaplib.IMAP4_SSL.read (self, thisFragmentSize)
          result += fragment
          soFar += thisFragmentSize # only a few, so not a tragic o/head
          return result                         

and this works just fine.

----------
nosy: +anglocelt
versions: +Python 2.5 -Python 2.4

_______________________________________
Python tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1441530>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to