diff options
author | Peter Poeml <poeml@suse.de> | 2006-06-18 11:36:57 +0000 |
---|---|---|
committer | Peter Poeml <poeml@suse.de> | 2006-06-18 11:36:57 +0000 |
commit | adfb7a63d7ba05152d630fb1a505b95dcde38038 (patch) | |
tree | 574e2a8565e217cdfe742851b7a3d1401e8ed24a | |
parent | 07aca153f6187ae17028075a87b32e2f38d560d2 (diff) | |
download | archivemail-adfb7a63d7ba05152d630fb1a505b95dcde38038.tar.gz archivemail-adfb7a63d7ba05152d630fb1a505b95dcde38038.tar.bz2 archivemail-adfb7a63d7ba05152d630fb1a505b95dcde38038.zip |
don't delete more than a certain number of messages at a time. The max command len is limited. Fixes bug 942403 (Archiving large IMAP folders fails)
-rwxr-xr-x | archivemail.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/archivemail.py b/archivemail.py index cee8a9f..3d42b86 100755 --- a/archivemail.py +++ b/archivemail.py @@ -1279,9 +1279,14 @@ def _archive_imap(mailbox_name, final_archive_name): if archive: archive.close() archive.finalise() - vprint("Deleting messages") - imap_srv.store(string.join(message_list, ','), - '+FLAGS.SILENT', '\\Deleted') + # do not delete more than a certain number of messages at a time, because the + # command length is limited. This avoids that servers terminate the connection with + # EOF or TCP RST. + vprint("Deleting %s messages" % len(message_list)) + max_delete = 100 + for i in range(0, len(message_list), max_delete): + imap_srv.store(string.join(message_list[i:i+max_delete], ','), + '+FLAGS.SILENT', '\\Deleted') imap_srv.close() imap_srv.logout() |