On Mon, 19 Jun 2000, Griffiths M (ISaCS) wrote:
> I recently upgraded one of my machines from 3.12 to 3.15 (Solaris 2.5.1).
> While testing
> I noticed that a message (frozen by message_filter) I was trying to deliver
> forceably using
> EXIMON (Deliver message) was being discarded with the message:
>
> Unfrozen by forced delivery
> => discarded (message_filter)
[snip]
If a message is frozen by the system filter, no deliveries are
attempted, and first_delivery remains true. It only becomes false after
a real attempt at delivery. Clearly, you could argue this either way,
but that's the way it has always been. Nothing has changed in that
respect. At least, not intentionally.
Wait, wait, wait... As you were. Damn.
I did make a "trivial" change. It was pointed out that using -bF to test
a filter containing "freeze" did not treat freezing as significant, and
I fixed that problem. But I seem to have broken things in the process.
Sorry about that.
Please try the attached patch.
Looks like I'll have to put on 3.16 fairly soon - this is the second
moderately annoying bug that's turned up in 3.15.
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.
*** exim-3.15/src/deliver.c Wed Jun 14 08:57:41 2000
--- deliver.c Tue Jun 20 10:10:26 2000
***************
*** 3677,3689 ****
/* The filter can request that a message be frozen, but this does not
take place if the message has been manually thawed. We need to unset
"delivered", which the filter will have set in order to make -bF work
! correctly. */
! if (action == SPECIAL_FREEZE && !deliver_manual_thaw)
{
- deliver_freeze = TRUE;
- deliver_frozen_at = time(NULL);
delivered = FALSE;
}
/* The filter can request that a message be failed. Again, we need to
--- 3677,3692 ----
/* The filter can request that a message be frozen, but this does not
take place if the message has been manually thawed. We need to unset
"delivered", which the filter will have set in order to make -bF work
! correctly, whether or not we are actually going to freeze. */
! if (action == SPECIAL_FREEZE)
{
delivered = FALSE;
+ if (!deliver_manual_thaw)
+ {
+ deliver_freeze = TRUE;
+ deliver_frozen_at = time(NULL);
+ }
}
/* The filter can request that a message be failed. Again, we need to