[dovecot-cvs] dovecot/src/lib-storage/index/maildir
maildir-uidlist.c, 1.1, 1.2
cras at procontrol.fi
cras at procontrol.fi
Thu Apr 29 00:41:26 EEST 2004
Update of /home/cvs/dovecot/src/lib-storage/index/maildir
In directory talvi:/tmp/cvs-serv13715/lib-storage/index/maildir
Modified Files:
maildir-uidlist.c
Log Message:
fixes
Index: maildir-uidlist.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-storage/index/maildir/maildir-uidlist.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- maildir-uidlist.c 27 Apr 2004 20:25:54 -0000 1.1
+++ maildir-uidlist.c 28 Apr 2004 21:41:24 -0000 1.2
@@ -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)
More information about the dovecot-cvs
mailing list