]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dsync: If msg input reading fails, don't also log a wrong "Unknown internal error...
authorTimo Sirainen <tss@iki.fi>
Mon, 25 Oct 2010 17:26:50 +0000 (18:26 +0100)
committerTimo Sirainen <tss@iki.fi>
Mon, 25 Oct 2010 17:26:50 +0000 (18:26 +0100)
src/dsync/dsync-worker-local.c

index 7c01c4636eb6027ade3be89ef5749bc2d8091f49..f43b8c45f1ef62dff640460189bcecb24985fde7 100644 (file)
@@ -1630,7 +1630,7 @@ local_worker_save_msg_continue(struct local_dsync_worker *worker)
 {
        struct mailbox *dest_box = worker->ext_mail->box;
        dsync_worker_save_callback_t *callback;
-       int ret;
+       ssize_t ret;
 
        while ((ret = i_stream_read(worker->save_input)) > 0) {
                if (mailbox_save_continue(worker->save_ctx) < 0)
@@ -1654,17 +1654,18 @@ local_worker_save_msg_continue(struct local_dsync_worker *worker)
                errno = worker->save_input->stream_errno;
                i_error("read(msg input) failed: %m");
                mailbox_save_cancel(&worker->save_ctx);
-               ret = -1;
+               dsync_worker_set_failure(&worker->worker);
        } else {
                i_assert(worker->save_input->eof);
-               ret = mailbox_save_finish(&worker->save_ctx);
-       }
-       if (ret < 0) {
-               struct mail_storage *storage = mailbox_get_storage(dest_box);
-               i_error("Can't save message to mailbox %s: %s",
-                       mailbox_get_vname(dest_box),
-                       mail_storage_get_last_error(storage, NULL));
-               dsync_worker_set_failure(&worker->worker);
+               if (mailbox_save_finish(&worker->save_ctx) < 0) {
+                       struct mail_storage *storage =
+                               mailbox_get_storage(dest_box);
+
+                       i_error("Can't save message to mailbox %s: %s",
+                               mailbox_get_vname(dest_box),
+                               mail_storage_get_last_error(storage, NULL));
+                       dsync_worker_set_failure(&worker->worker);
+               }
        }
        callback = worker->save_callback;
        worker->save_callback = NULL;