On Wed, 6 Apr 2005, Russell Stuart wrote:
> I will risk making another guess - it looks like child_done()
> tracks whether the parent all the parents children have been
> delivered by decrementing a counter ("addr->child_count -= 1"
> in the code). Ergo if child_done() is called too many times,
> that counter is going to be wrong - it will be decremented
> one too many times, as you point out.
Yes, that sounds very plausible. My new patch does essentially exactly
what your second one does, except that it is implemented by a switch to
previously_transported() to tell it not to call child_done() instead of
duplicating the checking code inline. So hopefully, all should be well
in future releases. Thanks for your time spent on this.
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.
Get the Exim 4 book: http://www.uit.co.uk/exim-book