Ver Fonte

don't leave 2nd store in limbo if opening 1st store fails synchronously

we can't leave the store FRESH, as otherwise the error handling code
will assume it is still being opened and will return to the main loop.
depending on the config this would cause an immediate termination or an
indefinite wait.
Oswald Buddenhagen há 10 anos atrás
pai
commit
9eba3d8cd9
1 ficheiros alterados com 6 adições e 2 exclusões
  1. 6 2
      src/main.c

+ 6 - 2
src/main.c

@@ -593,12 +593,16 @@ sync_chans( main_vars_t *mvars, int ent )
 			labels[M] = "M: ", labels[S] = "S: ";
 		else
 			labels[M] = labels[S] = "";
-		for (t = 0; t < 2; t++) {
+		for (t = 0; ; t++) {
 			info( "Opening %s %s...\n", str_ms[t], mvars->chan->stores[t]->name );
 			mvars->drv[t] = mvars->chan->stores[t]->driver;
 			mvars->drv[t]->open_store( mvars->chan->stores[t], labels[t], store_opened, AUX );
-			if (mvars->skip)
+			if (t)
 				break;
+			if (mvars->skip) {
+				mvars->state[1] = ST_CLOSED;
+				break;
+			}
 		}
 		mvars->cben = 1;
 	  opened: