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