On Wed, 14 Feb 2007, Dean Brooks wrote: > It this fix something the rest of us should be concerned about? > > That is, is this considered an emergency hotfix we should all install, > or does it only affect unusual configurations?
It's hard to say. I'll put the patch below in case anybody wants to install it on 4.66. -- Philip Hazel University of Cambridge Computing Service Get the Exim 4 book: http://www.uit.co.uk/exim-book *** exim-4.66/src/deliver.c Mon Jan 8 14:25:36 2007 --- deliver.c Tue Feb 6 14:19:00 2007 *************** *** 5639,5650 **** string_sprintf("R:%s", addr->domain), 0); /* Otherwise, if there is an existing retry record in the database, add ! retry items to delete both forms. Since the domain might have been ! rewritten (expanded to fully qualified) as a result of routing, ensure ! that the rewritten form is also deleted. */ else if (testflag(addr, af_dr_retry_exists)) { retry_add_item(addr, addr->address_retry_key, rf_delete); retry_add_item(addr, addr->domain_retry_key, rf_delete); if (Ustrcmp(addr->domain, old_domain) != 0) --- 5637,5652 ---- string_sprintf("R:%s", addr->domain), 0); /* Otherwise, if there is an existing retry record in the database, add ! retry items to delete both forms. We must also allow for the possibility ! of a routing retry that includes the sender address. Since the domain might ! have been rewritten (expanded to fully qualified) as a result of routing, ! ensure that the rewritten form is also deleted. */ else if (testflag(addr, af_dr_retry_exists)) { + uschar *altkey = string_sprintf("%s:<%s>", addr->address_retry_key, + sender_address); + retry_add_item(addr, altkey, rf_delete); retry_add_item(addr, addr->address_retry_key, rf_delete); retry_add_item(addr, addr->domain_retry_key, rf_delete); if (Ustrcmp(addr->domain, old_domain) != 0) wmf_text = next_emf(wmf, US"header"); *** exim-4.66/src/transports/smtp.c Mon Jan 8 14:25:37 2007 --- transports/smtp.c Tue Feb 6 14:19:00 2007 *************** *** 643,652 **** addr->transport_return = PENDING_OK; /* If af_dr_retry_exists is set, there was a routing delay on this address; ! ensure that any address-specific retry record is expunged. */ if (testflag(addr, af_dr_retry_exists)) retry_add_item(addr, addr->address_retry_key, rf_delete); } /* Timeout while reading the response */ --- 654,669 ---- addr->transport_return = PENDING_OK; /* If af_dr_retry_exists is set, there was a routing delay on this address; ! ensure that any address-specific retry record is expunged. We do this both ! for the basic key and for the version that also includes the sender. */ if (testflag(addr, af_dr_retry_exists)) + { + uschar *altkey = string_sprintf("%s:<%s>", addr->address_retry_key, + sender_address); + retry_add_item(addr, altkey, rf_delete); retry_add_item(addr, addr->address_retry_key, rf_delete); + } } /* Timeout while reading the response */ -- ## List details at http://www.exim.org/mailman/listinfo/exim-users ## Exim details at http://www.exim.org/ ## Please use the Wiki with this list - http://www.exim.org/eximwiki/
