mirror of
https://git.code.sf.net/p/isync/isync
synced 2026-03-06 18:23:51 +01:00
avoid useless delay after creating maildir box
we would see the recent timestamp of the creation and conclude that something is going on, so we'd wait. this is obviously nonsense. as we know that a freshly created mailbox is empty, simply skip the message scan alltogether.
This commit is contained in:
@@ -66,7 +66,7 @@ typedef struct maildir_message {
|
||||
|
||||
typedef struct maildir_store {
|
||||
store_t gen;
|
||||
int uvfd, uvok, nuid;
|
||||
int uvfd, uvok, nuid, fresh;
|
||||
int minuid, maxuid, newuid, nexcs, *excs;
|
||||
char *trash;
|
||||
#ifdef USE_DB
|
||||
@@ -355,6 +355,7 @@ maildir_validate( const char *box, int create, maildir_store_t *ctx )
|
||||
sys_error( "Maildir error: cannot access mailbox '%s'", buf );
|
||||
return DRV_BOX_BAD;
|
||||
}
|
||||
ctx->fresh = 1;
|
||||
} else {
|
||||
for (i = 0; i < 3; i++) {
|
||||
memcpy( buf + bl, subdirs[i], 4 );
|
||||
@@ -385,6 +386,7 @@ maildir_validate( const char *box, int create, maildir_store_t *ctx )
|
||||
}
|
||||
}
|
||||
closedir( dirp );
|
||||
ctx->fresh = 0;
|
||||
}
|
||||
return DRV_OK;
|
||||
}
|
||||
@@ -1026,6 +1028,9 @@ maildir_load( store_t *gctx, int minuid, int maxuid, int newuid, int *excs, int
|
||||
ctx->excs = nfrealloc( excs, nexcs * sizeof(int) );
|
||||
ctx->nexcs = nexcs;
|
||||
|
||||
if (ctx->fresh)
|
||||
goto dontscan;
|
||||
|
||||
if (maildir_scan( ctx, &msglist ) != DRV_OK) {
|
||||
cb( DRV_BOX_BAD, aux );
|
||||
return;
|
||||
@@ -1035,6 +1040,7 @@ maildir_load( store_t *gctx, int minuid, int maxuid, int newuid, int *excs, int
|
||||
maildir_app_msg( ctx, &msgapp, msglist.ents + i );
|
||||
maildir_free_scan( &msglist );
|
||||
|
||||
dontscan:
|
||||
cb( DRV_OK, aux );
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user