From: Timo Sirainen Date: Wed, 24 Jul 2019 12:36:03 +0000 (+0300) Subject: imap: GETMETADATA: If i_stream_get_size() fails, send client an internal error line X-Git-Tag: 2.3.9~342 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b901751eb91397e00bfc3f055e4fbc99f224cd1b;p=thirdparty%2Fdovecot%2Fcore.git imap: GETMETADATA: If i_stream_get_size() fails, send client an internal error line Previously the client didn't get any kind of an explanation why the GETMETADATA failed. --- diff --git a/src/imap/cmd-getmetadata.c b/src/imap/cmd-getmetadata.c index 7dbc59e86f..13b2677e64 100644 --- a/src/imap/cmd-getmetadata.c +++ b/src/imap/cmd-getmetadata.c @@ -146,6 +146,15 @@ cmd_getmetadata_send_nil_reply(struct imap_getmetadata_context *ctx, o_stream_nsend(ctx->cmd->client->output, str_data(str), str_len(str)); } +static void +cmd_getmetadata_handle_error_str(struct imap_getmetadata_context *ctx, + const char *error_string, + enum mail_error error) +{ + str_printfa(ctx->delayed_errors, "* NO %s\r\n", error_string); + ctx->last_error = error; +} + static bool cmd_getmetadata_handle_error(struct imap_getmetadata_context *ctx, bool entry_error) @@ -160,8 +169,7 @@ cmd_getmetadata_handle_error(struct imap_getmetadata_context *ctx, return FALSE; } - str_printfa(ctx->delayed_errors, "* NO %s\r\n", error_string); - ctx->last_error = error; + cmd_getmetadata_handle_error_str(ctx, error_string, error); return TRUE; } @@ -186,7 +194,8 @@ static void cmd_getmetadata_send_entry(struct imap_getmetadata_context *ctx, i_stream_get_name(value.value_stream), i_stream_get_error(value.value_stream)); i_stream_unref(&value.value_stream); - ctx->last_error = MAIL_ERROR_TEMP; + cmd_getmetadata_handle_error_str(ctx, + MAIL_ERRSTR_CRITICAL_MSG, MAIL_ERROR_TEMP); return; } } else {