dovecot-2.0-sslstream: dsync: Check for errors when saving messa...

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 13 02:55:50 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0-sslstream/rev/55b60c79c54c
changeset: 10220:55b60c79c54c
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Oct 28 17:04:24 2009 -0400
description:
dsync: Check for errors when saving messages.

diffstat:

3 files changed, 12 insertions(+), 2 deletions(-)
src/dsync/dsync-proxy-server-cmd.c |    6 ++++--
src/dsync/dsync-worker.c           |    5 +++++
src/dsync/dsync-worker.h           |    3 +++

diffs (47 lines):

diff -r eb9a262fde74 -r 55b60c79c54c src/dsync/dsync-proxy-server-cmd.c
--- a/src/dsync/dsync-proxy-server-cmd.c	Wed Oct 28 17:02:01 2009 -0400
+++ b/src/dsync/dsync-proxy-server-cmd.c	Wed Oct 28 17:04:24 2009 -0400
@@ -282,6 +282,7 @@ cmd_msg_save(struct dsync_proxy_server *
 	struct dsync_message msg;
 	struct dsync_msg_static_data data;
 	const char *error;
+	int ret;
 
 	if (dsync_proxy_msg_static_import_unescaped(pool_datastack_create(),
 						    args, &data, &error) < 0) {
@@ -300,9 +301,10 @@ cmd_msg_save(struct dsync_proxy_server *
 	net_set_nonblock(server->fd_in, FALSE);
 	dsync_worker_msg_save(server->worker, &msg, &data);
 	net_set_nonblock(server->fd_in, TRUE);
-	i_assert(data.input->eof);
+	ret = dsync_worker_has_failed(server->worker) ? -1 : 1;
+	i_assert(data.input->eof || ret < 0);
 	i_stream_destroy(&data.input);
-	return 1;
+	return ret;
 }
 
 static void cmd_msg_get_send_more(struct dsync_proxy_server *server)
diff -r eb9a262fde74 -r 55b60c79c54c src/dsync/dsync-worker.c
--- a/src/dsync/dsync-worker.c	Wed Oct 28 17:02:01 2009 -0400
+++ b/src/dsync/dsync-worker.c	Wed Oct 28 17:04:24 2009 -0400
@@ -184,3 +184,8 @@ void dsync_worker_set_failure(struct dsy
 {
 	worker->failed = TRUE;
 }
+
+bool dsync_worker_has_failed(struct dsync_worker *worker)
+{
+	return worker->failed;
+}
diff -r eb9a262fde74 -r 55b60c79c54c src/dsync/dsync-worker.h
--- a/src/dsync/dsync-worker.h	Wed Oct 28 17:02:01 2009 -0400
+++ b/src/dsync/dsync-worker.h	Wed Oct 28 17:04:24 2009 -0400
@@ -113,4 +113,7 @@ void dsync_worker_finish(struct dsync_wo
 			 dsync_worker_finish_callback_t *callback,
 			 void *context);
 
+/* Returns TRUE if some commands have failed. */
+bool dsync_worker_has_failed(struct dsync_worker *worker);
+
 #endif


More information about the dovecot-cvs mailing list