Re: [exim] Re: Bug in Exim - duplicating messages

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: Russell Stuart
CC: exim-users
Subject: Re: [exim] Re: Bug in Exim - duplicating messages
On Fri, 18 Mar 2005, Russell Stuart wrote:

> Sorry for the late reply.


Here's an even later one! I've just got round to looking at this.

> That did fix the original problem, but introduced new bugs.
> I didn't elaborate at the time - but it caused exim to
> drop messages. I didn't look into why too closely, because
> I thought the patch was suspect from the start -
> previously_transported mungs the linked lists that
> do_local_deliveries is traversing at the time.


Hmm. I cannot see that. Maybe I'm going mad, but I can't see anything in
previously_transported() or the functions that it calls that would make
any changes to that list.

> The reason for this long spiel is I have not tested your
> patch, but it does look like it would exhibit the same
> faults as my original one. I think my test script did
> demonstrate the fault - if you go looking at what isn't
> delivered.


Certainly my patch is essentially the same as your first one. Do you
still have the remnants of any tests that showed up the problem?

HOWEVER:

I can see a bug in my patch. Because it leaves the address on the queue,
it will be picked up by the higher call to previously_transported() on
the next time round the loop. This will cause child_done() to be called
a second time on the address, which will probably cause some double
logging, at the very least. Maybe is also caused your problem.

Your second patch will avoid this. I will do something similar, but I
think I'll do it by providing an argument to previously_delivered rather
than duplicating the code in line.

Thanks & Regards,
Philip

-- 
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.