dovecot-2.0: mdbox: Purge crashed if it purged all messages from...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Apr 20 18:05:25 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/944f4335845f
changeset: 11179:944f4335845f
user: Timo Sirainen <tss at iki.fi>
date: Tue Apr 20 18:05:08 2010 +0300
description:
mdbox: Purge crashed if it purged all messages from a file.
diffstat:
src/lib-storage/index/dbox-multi/mdbox-purge.c | 14 +++++++++-----
src/lib-storage/index/dbox-multi/mdbox-storage.c | 8 --------
2 files changed, 9 insertions(+), 13 deletions(-)
diffs (49 lines):
diff -r 94ee28a11c47 -r 944f4335845f src/lib-storage/index/dbox-multi/mdbox-purge.c
--- a/src/lib-storage/index/dbox-multi/mdbox-purge.c Tue Apr 20 17:09:19 2010 +0300
+++ b/src/lib-storage/index/dbox-multi/mdbox-purge.c Tue Apr 20 18:05:08 2010 +0300
@@ -271,18 +271,22 @@
if (ret <= 0)
ret = -1;
- else {
+ else if (ctx->append_ctx == NULL) {
+ /* everything purged from this file */
+ ret = 1;
+ } else {
/* assign new file_id + offset to moved messages */
if (dbox_map_append_move(ctx->append_ctx, &copied_map_uids,
&expunged_map_uids) < 0 ||
dbox_map_append_commit(ctx->append_ctx) < 0)
ret = -1;
- else {
+ else
ret = 1;
- (void)dbox_file_unlink(file);
- }
}
- dbox_map_append_free(&ctx->append_ctx);
+ if (ret > 0)
+ (void)dbox_file_unlink(file);
+ if (ctx->append_ctx != NULL)
+ dbox_map_append_free(&ctx->append_ctx);
if (ret < 0)
dbox_file_unlock(file);
array_free(&copied_map_uids);
diff -r 94ee28a11c47 -r 944f4335845f src/lib-storage/index/dbox-multi/mdbox-storage.c
--- a/src/lib-storage/index/dbox-multi/mdbox-storage.c Tue Apr 20 17:09:19 2010 +0300
+++ b/src/lib-storage/index/dbox-multi/mdbox-storage.c Tue Apr 20 18:05:08 2010 +0300
@@ -47,14 +47,6 @@
return -1;
}
-#ifndef HAVE_FLOCK
- if (master_service_get_client_limit(master_service) > 1) {
- *error_r = "mdbox requires client_limit=1 for service "
- "since your OS doesn't support flock()";
- return -1;
- }
-#endif
-
_storage->unique_root_dir =
p_strdup(_storage->pool, ns->list->set.root_dir);
More information about the dovecot-cvs
mailing list