abort channel sync when a store is fubar

this got lost in d5a5da947.

this also simplifies a nested condition, where the logic has previously
been, but isn't applicable any more.

REFMAIL: 87fsjloz05.fsf@wavexx.thregr.org
This commit is contained in:
Oswald Buddenhagen 2022-07-01 14:54:24 +02:00
parent 92faccc639
commit 460bfbb8ac

View File

@ -668,7 +668,7 @@ static void
do_sync_boxes( main_vars_t *mvars ) do_sync_boxes( main_vars_t *mvars )
{ {
mvars->box_cben = 0; mvars->box_cben = 0;
for (;;) { while (mvars->state[F] == ST_OPEN && mvars->state[N] == ST_OPEN) {
if (mvars->chanptr->boxlist) { if (mvars->chanptr->boxlist) {
box_ent_t *mbox = mvars->boxptr; box_ent_t *mbox = mvars->boxptr;
if (!mbox) if (!mbox)
@ -730,13 +730,11 @@ done_sync( int sts, void *aux )
stats(); stats();
if (sts) { if (sts) {
mvars->cvars->ret = 1; mvars->cvars->ret = 1;
if (sts & (SYNC_BAD(F) | SYNC_BAD(N))) {
if (sts & SYNC_BAD(F)) if (sts & SYNC_BAD(F))
mvars->state[F] = ST_CLOSED; mvars->state[F] = ST_CLOSED;
if (sts & SYNC_BAD(N)) if (sts & SYNC_BAD(N))
mvars->state[N] = ST_CLOSED; mvars->state[N] = ST_CLOSED;
} }
}
mvars->box_done = 1; mvars->box_done = 1;
if (mvars->box_cben) if (mvars->box_cben)
do_sync_boxes( mvars ); do_sync_boxes( mvars );