I noticed a problem with Cyrus re changes in the system date/time. If the system time is suddenly advanced forward Cyrus will spawn many children to handle the events it has "missed". This can result in total starvation of resources (out of memory), especially if the time change covers several years.
To see this behaviour, try the following two commands: % date -s "2002-01-01 00:00" % date -s "2004-01-01 00:00" Cyrus will soon generate thousands of processes and bring the system to a grinding halt :) Included below is a simple patch for 2.1.11 which fixes the problem. Application to 2.1.12 should be similar. ---< SNIP >---------------------------------------------------------- --- cyrus-imapd-2.1.11/master/master.c.orig Mon Mar 10 12:52:28 2003 +++ cyrus-imapd-2.1.11/master/master.c Mon Mar 10 12:55:26 2003 @@ -687,7 +687,14 @@ /* reschedule as needed */ b = a->next; if (a->period) { - a->mark += a->period; + + if (a->mark + a->period > now) + a->mark += a->period; + else + a->mark = now + a->period; + /* reschedule a */ schedule_event(a); } else { ---< SNIP >---------------------------------------------------------- Note that this doesn't deal with *backwards* shifts in the system clock althought the ramifications aren't *quite* as serious. Cyrus just won't execute any events until the time before the time shift occured is reached. This wouldn't be too hard to fix but backwards shifts never happens in my situation so I didn't bother. -- Menno Smits (B.Info.Tech. B.Eng.(M.E.) Hons) Senior Development Engineer NetBox | Oxcoda E-mail: [EMAIL PROTECTED] Web: netbox.biz