Re: [Evolution] remove duplicate emails




Do you know if there's a bug open for "evolution sometimes downloads
dupes from the POP server" already?  It should be set as related to this
one.  ;-)

must of them should be NEEDINFO or NOTABUG, e.g.
http://bugzilla.gnome.org/show_bug.cgi?id=317599

Yeah I can't reproduce it 100%, it seems to be timing sensitive, and the
more unreliable the network connection the more of a problem it is (it
happens once a week on dialup).  It seems that if Evo is disconnected at
the exact wrong time then some messages will be downloaded again.

Well, there are two different kinds of such reports.

* Broken server. Some POP3 servers seem to alter some headers every time
  a client fetches the mails "left on the POP3 account". Probably hard
  to work around this, as it is  a) abusing the POP3 protocol and  b) a
  broken server anyway.

* Bad line. Dropping connections resulting in the same message being
  downloaded twice even without "leave on server". Reproducing this
  should be easy.


Unfortunately this is useless as a bug report...

I don't think so. Your description above offers sufficient information
to debug this. :-)

Steps to reproduce:

* Send a couple of *large* mails to your POP3 account. Large means, that
  depending on your line speed downloading any such mail takes at least
  several seconds.
* Fetch the mails using Evo. Watch the fetching progress.
* Kick the connection, *before* Evo downloaded the last message.
  pull the network plug / ifdown the interface / kill the server / etc
* Restore the connection and fetch again. Get duplicates.


This should be sufficient to reliably reproduce this. And it should not
be necessary for me to explain this to any developer. If a bug with a
bad line involved is closed cause the developer can't reproduce, he most
likely did not try hard enough.

...guenther


-- 
char *t="\10pse\0r\0dtu\0  ghno\x4e\xc8\x79\xf4\xab\x51\x8a\x10\xf4\xf4\xc4";
main(){ char h,m=h=*t++,*x=t+2*h,c,i,l=*x,s=0; for (i=0;i<l;i++){ i%8? c<<=1:
(c=*++x); c&128 && (s+=h); if (!(h>>=1)||!t[s+h]){ putchar(t[s]);h=m;s=0; }}}




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]