dovecot-2.0: dsync: Added more asserts to dsync_worker_finish() ...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Jul 16 15:57:45 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/38fcf81cc9e0
changeset: 11840:38fcf81cc9e0
user: Timo Sirainen <tss at iki.fi>
date: Fri Jul 16 13:57:41 2010 +0100
description:
dsync: Added more asserts to dsync_worker_finish() handling
diffstat:
src/dsync/dsync-proxy-client.c | 11 +++++++++--
src/dsync/dsync-worker-local.c | 6 ++++++
2 files changed, 15 insertions(+), 2 deletions(-)
diffs (74 lines):
diff -r 8cf47a359213 -r 38fcf81cc9e0 src/dsync/dsync-proxy-client.c
--- a/src/dsync/dsync-proxy-client.c Fri Jul 16 13:46:57 2010 +0100
+++ b/src/dsync/dsync-proxy-client.c Fri Jul 16 13:57:41 2010 +0100
@@ -68,6 +68,7 @@
struct aqueue *request_queue;
unsigned int handshake_received:1;
+ unsigned int finishing:1;
unsigned int finished:1;
};
@@ -247,6 +248,12 @@
{
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)
@@ -285,8 +292,6 @@
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;
}
@@ -1062,7 +1067,9 @@
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");
diff -r 8cf47a359213 -r 38fcf81cc9e0 src/dsync/dsync-worker-local.c
--- a/src/dsync/dsync-worker-local.c Fri Jul 16 13:46:57 2010 +0100
+++ b/src/dsync/dsync-worker-local.c Fri Jul 16 13:57:41 2010 +0100
@@ -102,6 +102,7 @@
void *finish_context;
unsigned int reading_mail:1;
+ unsigned int finishing:1;
unsigned int finished:1;
};
@@ -1510,7 +1511,9 @@
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);
}
@@ -1700,6 +1703,9 @@
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;
More information about the dovecot-cvs
mailing list