commit 84194a7a9fdd179ca15e4b069a3cffbeaec03bab Author: Oswald Buddenhagen <o...@users.sf.net> Date: Tue Jan 10 11:37:26 2023 +0100
don't try to create already existing boxes if the SELECT command fails even though the box was LISTed, then the error cause is obviously not that box is absent, and so we should not attempt to CREATE it. src/sync.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/sync.c b/src/sync.c index bff3684..c66370c 100644 --- a/src/sync.c +++ b/src/sync.c @@ -377,10 +377,13 @@ sync_boxes( store_t *ctx[], const char * const names[], int present[], channel_c sync_ref( svars ); for (t = 0; ; t++) { info( "Opening %s box %s...\n", str_fn[t], svars->orig_name[t] ); - if (present[t] == BOX_ABSENT) + if (present[t] == BOX_ABSENT) { box_confirmed2( svars, t ); - else + } else { + if (present[t] == BOX_PRESENT) + svars->state[t] |= ST_PRESENT; svars->drv[t]->open_box( ctx[t], box_confirmed, AUX ); + } if (t || check_cancel( svars )) break; } @@ -399,6 +402,12 @@ box_confirmed( int sts, uint uidvalidity, void *aux ) if (sts == DRV_OK) { svars->state[t] |= ST_PRESENT; svars->newuidval[t] = uidvalidity; + } else if (svars->state[t] & ST_PRESENT) { + error( "Error: channel %s: %s box %s cannot be opened.\n", + svars->chan->name, str_fn[t], svars->orig_name[t] ); + svars->ret |= SYNC_FAIL; + cancel_sync( svars ); + return; } box_confirmed2( svars, t ); } _______________________________________________ isync-devel mailing list isync-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/isync-devel