struct aqueue *request_queue;
unsigned int handshake_received:1;
+ unsigned int finishing:1;
unsigned int finished:1;
};
{
bool success = TRUE;
+ i_assert(worker->finishing);
+ i_assert(!worker->finished);
+
+ worker->finishing = FALSE;
+ worker->finished = TRUE;
+
if (strcmp(line, "changes") == 0)
worker->worker.unexpected_changes = TRUE;
else if (strcmp(line, "fail") == 0)
ret = proxy_client_worker_next_msg_get(worker, &request, line);
break;
case PROXY_CLIENT_REQUEST_TYPE_FINISH:
- i_assert(!worker->finished);
- worker->finished = TRUE;
proxy_client_worker_next_finish(worker, &request, line);
break;
}
struct proxy_client_request request;
i_assert(worker->save_input == NULL);
+ i_assert(!worker->finishing);
+ worker->finishing = TRUE;
worker->finished = FALSE;
o_stream_send_str(worker->output, "FINISH\n");
void *finish_context;
unsigned int reading_mail:1;
+ unsigned int finishing:1;
unsigned int finished:1;
};
if (worker->save_io != NULL || worker->reading_mail)
return;
+ i_assert(worker->finishing);
i_assert(!worker->finished);
+ worker->finishing = FALSE;
worker->finished = TRUE;
worker->finish_callback(!worker->worker.failed, worker->finish_context);
}
struct local_dsync_worker *worker =
(struct local_dsync_worker *)_worker;
+ i_assert(!worker->finishing);
+
+ worker->finishing = TRUE;
worker->finished = FALSE;
worker->finish_callback = callback;
worker->finish_context = context;