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

Reply via email to