Mercurial > dovecot > original-hg > dovecot-1.2
changeset 1931:35a947481130 HEAD
fixes
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 29 Apr 2004 00:41:24 +0300 |
parents | 8f31c6dae363 |
children | f04ff2a2ad5d |
files | src/lib-storage/index/index-sync.c src/lib-storage/index/maildir/maildir-uidlist.c |
diffstat | 2 files changed, 21 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/index-sync.c Wed Apr 28 23:51:22 2004 +0300 +++ b/src/lib-storage/index/index-sync.c Thu Apr 29 00:41:24 2004 +0300 @@ -67,6 +67,9 @@ } } + if (ret < 0) + mail_storage_set_index_error(ibox); + if (sc->expunge != NULL) { for (i = expunges_count*2; i > 0; i -= 2) { for (seq = expunges[i-1]; seq >= expunges[i-2]; seq--) @@ -81,9 +84,6 @@ sc->new_messages(&ibox->box, new_count, 0, sc_context); } - if (ret < 0) - mail_storage_set_index_error(ibox); - mail_index_view_unlock(ibox->view); return ret; }
--- a/src/lib-storage/index/maildir/maildir-uidlist.c Wed Apr 28 23:51:22 2004 +0300 +++ b/src/lib-storage/index/maildir/maildir-uidlist.c Thu Apr 29 00:41:24 2004 +0300 @@ -79,6 +79,8 @@ if (fd == -1) { if (errno == EAGAIN) return 0; + mail_storage_set_critical(uidlist->ibox->box.storage, + "file_dotlock_open(%s) failed: %m", path); return -1; } @@ -123,10 +125,10 @@ { i_assert(!UIDLIST_IS_LOCKED(uidlist)); + hash_destroy(uidlist->files); if (uidlist->filename_pool != NULL) pool_unref(uidlist->filename_pool); - hash_destroy(uidlist->files); buffer_free(uidlist->record_buf); i_free(uidlist->fname); i_free(uidlist); @@ -237,12 +239,16 @@ return -1; } + hash_clear(uidlist->files, FALSE); if (uidlist->filename_pool != NULL) - pool_unref(uidlist->filename_pool); - uidlist->filename_pool = - pool_alloconly_create("uidlist filename_pool", - nearest_power(st.st_size - - st.st_size/8)); + p_clear(uidlist->filename_pool); + else { + uidlist->filename_pool = + pool_alloconly_create("uidlist filename_pool", + nearest_power(st.st_size - + st.st_size/8)); + } + buffer_set_used_size(uidlist->record_buf, 0); uidlist->version = 0; @@ -457,6 +463,8 @@ been added */ ret = maildir_uidlist_try_lock(ctx->uidlist); if (ret <= 0) { + if (ret == 0) + return 1; // FIXME: does it work right? ctx->failed = TRUE; return -1; } @@ -548,14 +556,14 @@ for (; dest < size; dest++) rec[dest].uid = uidlist->next_uid++; + hash_destroy(uidlist->files); + uidlist->files = ctx->files; + ctx->files = NULL; + if (uidlist->filename_pool != NULL) pool_unref(uidlist->filename_pool); uidlist->filename_pool = ctx->filename_pool; ctx->filename_pool = NULL; - - hash_destroy(uidlist->files); - uidlist->files = ctx->files; - ctx->files = NULL; } int maildir_uidlist_sync_deinit(struct maildir_uidlist_sync_ctx *ctx)