commit 2eece822760c08f636282701493d058bf418cc92
Author: Oswald Buddenhagen <[email protected]>
Date: Thu Jan 1 16:49:23 2015 +0100
lock .uidvalidity on demand
a maildir re-scan doesn't need to lock it if it doesn't need to allocate
any new uids.
src/drv_maildir.c | 13 +++++--------
1 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/src/drv_maildir.c b/src/drv_maildir.c
index 5ecf2c3..e3f455d 100644
--- a/src/drv_maildir.c
+++ b/src/drv_maildir.c
@@ -590,6 +590,10 @@ lcktmr_timeout( void *aux )
static int
maildir_obtain_uid( maildir_store_t *ctx, int *uid )
{
+ int ret;
+
+ if ((ret = maildir_uidval_lock( ctx )) != DRV_OK)
+ return ret;
*uid = ++ctx->nuid;
return maildir_store_uid( ctx );
}
@@ -674,12 +678,6 @@ maildir_scan( maildir_store_t *ctx, msglist_t *msglist )
struct stat st;
char buf[_POSIX_PATH_MAX], nbuf[_POSIX_PATH_MAX];
-#ifdef USE_DB
- if (!ctx->db)
-#endif /* USE_DB */
- if ((ret = maildir_uidval_lock( ctx )) != DRV_OK)
- return ret;
-
again:
msglist->ents = 0;
msglist->nents = msglist->nalloc = 0;
@@ -1329,8 +1327,7 @@ maildir_store_msg( store_t *gctx, msg_data_t *data, int
to_trash,
} else
#endif /* USE_DB */
{
- if ((ret = maildir_uidval_lock( ctx )) != DRV_OK ||
- (ret = maildir_obtain_uid( ctx, &uid )) != DRV_OK) {
+ if ((ret = maildir_obtain_uid( ctx, &uid )) != DRV_OK) {
free( data->data );
cb( ret, 0, aux );
return;
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
isync-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/isync-devel