On Sun, Mar 06, 2016 at 10:11:54PM +0100, Nicolas Sebrecht wrote: > Comments follow. I think the current logic is uselessly complex.... > > -- %< -- > > Signed-off-by: Nicolas Sebrecht <nicolas.s-...@laposte.net> > --- > offlineimap/folder/Maildir.py | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/offlineimap/folder/Maildir.py b/offlineimap/folder/Maildir.py > index 77a774b..1546a2f 100644 > --- a/offlineimap/folder/Maildir.py > +++ b/offlineimap/folder/Maildir.py > @@ -129,6 +129,13 @@ class MaildirFolder(BaseFolder): > foldermatch = folderstr in filename > # If there was no folder MD5 specified, or if it mismatches, > # assume it is a foreign (new) message and ret: uid, fmd5 = None, > None > + > + # XXX: This is wrong behaviour: if FMD5 is missing or mismatches, > assume > + # the mail is new and **fix UID to None** to avoid any conflict. > + > + # XXX: If UID is missing, I have no idea what FMD5 can do. Should be > + # fixed to None in this case, too.
The more I think about those 15 lines of code, the more I think this _parse_filename() method is critical to avoid data loss and UID conflicts. The name of this method is a bit lying around. It's from there it's later decided if the file is considered new mail or not (whether UID is None). > + > if foldermatch: > uidmatch = re_uidmatch.search(filename) > if uidmatch: -- Nicolas Sebrecht