[dovecot-cvs] dovecot/src/lib-index mail-tree.c,1.6,1.7
cras at procontrol.fi
cras at procontrol.fi
Fri Oct 25 06:25:54 EEST 2002
- Previous message: [dovecot-cvs] dovecot/src/imap cmd-select.c,1.6,1.7
- Next message: [dovecot-cvs] dovecot/src/lib-index/mbox mbox-append.c,1.30,1.31 mbox-from.c,1.6,1.7 mbox-fsck.c,1.29,1.30 mbox-index.c,1.38,1.39
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/dovecot/src/lib-index
In directory danu:/tmp/cvs-serv31638
Modified Files:
mail-tree.c
Log Message:
Tree file wasn't correctly re-mmap()ed when sync_id changed.
Index: mail-tree.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-tree.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- mail-tree.c 24 Oct 2002 01:48:33 -0000 1.6
+++ mail-tree.c 25 Oct 2002 02:25:52 -0000 1.7
@@ -44,20 +44,8 @@
return FALSE;
}
-int _mail_tree_mmap_update(MailTree *tree, int forced)
+static int mmap_update(MailTree *tree)
{
- if (!forced && tree->header != NULL &&
- tree->sync_id == tree->header->sync_id) {
- /* make sure file size hasn't changed */
- tree->mmap_used_length = tree->header->used_file_size;
- if (tree->mmap_used_length > tree->mmap_full_length) {
- i_panic("Tree file size was grown without "
- "updating sync_id");
- }
-
- return TRUE;
- }
-
i_assert(!tree->anon_mmap);
if (tree->mmap_base != NULL) {
@@ -134,6 +122,23 @@
return TRUE;
}
+int _mail_tree_mmap_update(MailTree *tree, int forced)
+{
+ if (!forced && tree->header != NULL &&
+ tree->sync_id == tree->header->sync_id) {
+ /* make sure file size hasn't changed */
+ tree->mmap_used_length = tree->header->used_file_size;
+ if (tree->mmap_used_length > tree->mmap_full_length) {
+ i_panic("Tree file size was grown without "
+ "updating sync_id");
+ }
+
+ return TRUE;
+ }
+
+ return mmap_update(tree) && mmap_verify(tree);
+}
+
static MailTree *mail_tree_open(MailIndex *index)
{
MailTree *tree;
@@ -209,7 +214,7 @@
return FALSE;
do {
- if (!_mail_tree_mmap_update(tree, TRUE))
+ if (!mmap_update(tree))
break;
if (tree->mmap_full_length == 0) {
@@ -281,8 +286,7 @@
return FALSE;
if (!mail_tree_init(tree) ||
- !_mail_tree_mmap_update(tree, TRUE) ||
- !mmap_verify(tree)) {
+ !_mail_tree_mmap_update(tree, TRUE)) {
tree->index->header->flags |= MAIL_INDEX_FLAG_REBUILD_TREE;
return FALSE;
}
@@ -360,7 +364,7 @@
tree->header->sync_id++;
tree->modified = TRUE;
- if (!_mail_tree_mmap_update(tree, TRUE) || !mmap_verify(tree))
+ if (!_mail_tree_mmap_update(tree, TRUE))
return FALSE;
return TRUE;
- Previous message: [dovecot-cvs] dovecot/src/imap cmd-select.c,1.6,1.7
- Next message: [dovecot-cvs] dovecot/src/lib-index/mbox mbox-append.c,1.30,1.31 mbox-from.c,1.6,1.7 mbox-fsck.c,1.29,1.30 mbox-index.c,1.38,1.39
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list