From f5be5eb58b858b25bc8b9c73e4ccddab026c6396 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 9 Aug 2010 19:59:19 +0100 Subject: [PATCH] dsync: Error handling fixes. Mainly fixes quota of quota error while saving. --- 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(-) diff --git a/src/dsync/dsync-brain.c b/src/dsync/dsync-brain.c index b15305bf13..8c41d46966 100644 --- a/src/dsync/dsync-brain.c +++ b/src/dsync/dsync-brain.c @@ -879,6 +879,11 @@ void dsync_brain_sync_all(struct dsync_brain *brain) 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 --git a/src/dsync/dsync-proxy-server.c b/src/dsync/dsync-proxy-server.c index dd98ad5d67..d51bd50a46 100644 --- a/src/dsync/dsync-proxy-server.c +++ b/src/dsync/dsync-proxy-server.c @@ -52,8 +52,10 @@ static int proxy_server_run_cmd(struct dsync_proxy_server *server) 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 --git a/src/dsync/dsync-worker.c b/src/dsync/dsync-worker.c index ff5ab50538..035924e246 100644 --- a/src/dsync/dsync-worker.c +++ b/src/dsync/dsync-worker.c @@ -228,7 +228,9 @@ void dsync_worker_msg_save(struct dsync_worker *worker, 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; -- 2.47.3