unexpunge segfaults with -l on some mailboxes
Patrick Boutilier
boutilpj at ednet.ns.ca
Wed Mar 25 19:43:10 EDT 2009
Bron Gondwana wrote:
> On Mon, Mar 23, 2009 at 04:08:47PM -0700, David R Bosso wrote:
>> I'd love to see a fix for this.
>
> Here's one:
>
>>From 8448c2f304bd61fe073b1d98a0d614b69b0ee184
> Subject: [PATCH] Don't immediate expunge in ipurge
>
> This has two benefits.
>
> 1) you can unexpunge
> 2) it won't corrupt the cache pointers in the expunge file
>
> NOTE: this only applies if you have delayed expunge enabled
> in your configuration, otherwise the behaviour is unchanged.
> ---
> imap/ipurge.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/imap/ipurge.c b/imap/ipurge.c
> index a8c6228..1a76ede 100644
> --- a/imap/ipurge.c
> +++ b/imap/ipurge.c
> @@ -268,7 +268,7 @@ int purge_me(char *name, int matchlen __attribute__((unused)),
> (void) mailbox_lock_index(&the_box);
> the_box.index_lock_count = 1;
>
> - mailbox_expunge(&the_box, purge_check, &stats, EXPUNGE_FORCE);
> + mailbox_expunge(&the_box, purge_check, &stats, 0);
>
> sync_log_mailbox(the_box.name);
> mailbox_close(&the_box);
Looks good. Passes my earlier test. And you are correct. You can
unexpunge messages that ipurge purges. Slick :-)
More information about the Info-cyrus
mailing list