dovecot-2.2: imap: Improved "EOF while appending" disconnect log...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Oct 11 19:27:54 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/2e23267dff66
changeset: 16844:2e23267dff66
user: Timo Sirainen <tss at iki.fi>
date: Fri Oct 11 19:27:39 2013 +0300
description:
imap: Improved "EOF while appending" disconnect log message.
diffstat:
src/imap/cmd-append.c | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diffs (56 lines):
diff -r ff2452560ef0 -r 2e23267dff66 src/imap/cmd-append.c
--- a/src/imap/cmd-append.c Fri Oct 11 19:17:10 2013 +0300
+++ b/src/imap/cmd-append.c Fri Oct 11 19:27:39 2013 +0300
@@ -52,7 +52,8 @@
static bool cmd_append_continue_message(struct client_command_context *cmd);
static bool cmd_append_parse_new_msg(struct client_command_context *cmd);
-static const char *get_disconnect_reason(struct cmd_append_context *ctx)
+static const char *
+get_disconnect_reason(struct cmd_append_context *ctx, uoff_t lit_offset)
{
string_t *str = t_str_new(128);
unsigned int secs = ioloop_time - ctx->started;
@@ -61,7 +62,7 @@
ctx->count, secs);
if (ctx->litinput != NULL) {
str_printfa(str, ", %"PRIuUOFF_T"/%"PRIuUOFF_T" bytes",
- ctx->litinput->v_offset, ctx->literal_size);
+ lit_offset, ctx->literal_size);
}
str_append_c(str, ')');
return str_c(str);
@@ -82,7 +83,7 @@
switch (i_stream_read(client->input)) {
case -1:
/* disconnected */
- reason = get_disconnect_reason(ctx);
+ reason = get_disconnect_reason(ctx, ctx->litinput->v_offset);
cmd_append_finish(cmd->context);
/* Reset command so that client_destroy() doesn't try to call
cmd_append_continue_message() anymore. */
@@ -825,7 +826,7 @@
}
if (ctx->litinput->eof || client->input->closed) {
- bool all_written = ctx->litinput->v_offset == ctx->literal_size;
+ uoff_t lit_offset = ctx->litinput->v_offset;
/* finished - do one more read, to make sure istream-chain
unreferences its stream, which is needed for litinput's
@@ -843,12 +844,13 @@
/* failed above */
client_send_storage_error(cmd, ctx->storage);
ctx->failed = TRUE;
- } else if (!all_written) {
+ } else if (lit_offset != ctx->literal_size) {
/* client disconnected before it finished sending the
whole message. */
ctx->failed = TRUE;
mailbox_save_cancel(&ctx->save_ctx);
- client_disconnect(client, "EOF while appending");
+ client_disconnect(client,
+ get_disconnect_reason(ctx, lit_offset));
} else if (ctx->catenate) {
/* CATENATE isn't finished yet */
} else if (mailbox_save_finish(&ctx->save_ctx) < 0) {
More information about the dovecot-cvs
mailing list