dovecot-2.0: dsync: Error handling fixes.

dovecot at dovecot.org dovecot at dovecot.org
Mon Aug 9 21:59:22 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/88309dcfdab5
changeset: 11971:88309dcfdab5
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Aug 09 19:59:19 2010 +0100
description:
dsync: Error handling fixes.
Mainly fixes quota of quota error while saving.

diffstat:

 src/dsync/dsync-brain.c        |  5 +++++
 src/dsync/dsync-proxy-server.c |  4 +++-
 src/dsync/dsync-worker.c       |  4 +++-
 3 files changed, 11 insertions(+), 2 deletions(-)

diffs (44 lines):

diff -r 59b0e70c8f14 -r 88309dcfdab5 src/dsync/dsync-brain.c
--- a/src/dsync/dsync-brain.c	Mon Aug 09 18:14:48 2010 +0100
+++ b/src/dsync/dsync-brain.c	Mon Aug 09 19:59:19 2010 +0100
@@ -879,6 +879,11 @@
 	while (brain->state != DSYNC_STATE_SYNC_END) {
 		old_state = brain->state;
 		dsync_brain_sync(brain);
+
+		if (dsync_worker_has_failed(brain->src_worker) ||
+		    dsync_worker_has_failed(brain->dest_worker))
+			break;
+
 		i_assert(brain->state != old_state);
 	}
 }
diff -r 59b0e70c8f14 -r 88309dcfdab5 src/dsync/dsync-proxy-server.c
--- a/src/dsync/dsync-proxy-server.c	Mon Aug 09 18:14:48 2010 +0100
+++ b/src/dsync/dsync-proxy-server.c	Mon Aug 09 19:59:19 2010 +0100
@@ -52,8 +52,10 @@
 
 	if ((ret = server->cur_cmd->func(server, server->cur_args)) == 0)
 		return 0;
-	if (ret < 0)
+	if (ret < 0) {
 		i_error("command %s failed", server->cur_cmd->name);
+		return -1;
+	}
 
 	server->cur_cmd = NULL;
 	server->cur_args = NULL;
diff -r 59b0e70c8f14 -r 88309dcfdab5 src/dsync/dsync-worker.c
--- a/src/dsync/dsync-worker.c	Mon Aug 09 18:14:48 2010 +0100
+++ b/src/dsync/dsync-worker.c	Mon Aug 09 19:59:19 2010 +0100
@@ -228,7 +228,9 @@
 			   void *context)
 {
 	if (!worker->readonly) {
-		if (!worker->failed) T_BEGIN {
+		if (worker->failed)
+			callback(context);
+		else T_BEGIN {
 			worker->v.msg_save(worker, msg, data,
 					   callback, context);
 		} T_END;


More information about the dovecot-cvs mailing list