From: Timo Sirainen Date: Wed, 24 Jul 2019 12:26:08 +0000 (+0300) Subject: imap: GETMETADATA: Replace failed boolean with last_error code X-Git-Tag: 2.3.8~164 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a35d7f1f2843c3fde39911bc87d33d2afd63dfef;p=thirdparty%2Fdovecot%2Fcore.git imap: GETMETADATA: Replace failed boolean with last_error code --- diff --git a/src/imap/cmd-getmetadata.c b/src/imap/cmd-getmetadata.c index b2a6e6eca5..f968ad0926 100644 --- a/src/imap/cmd-getmetadata.c +++ b/src/imap/cmd-getmetadata.c @@ -28,10 +28,10 @@ struct imap_getmetadata_context { string_t *iter_entry_prefix; string_t *delayed_errors; + enum mail_error last_error; unsigned int entry_idx; bool first_entry_sent; - bool failed; }; static bool @@ -162,7 +162,7 @@ static void cmd_getmetadata_send_entry(struct imap_getmetadata_context *ctx, if (error != MAIL_ERROR_NOTFOUND && error != MAIL_ERROR_PERM) { str_printfa(ctx->delayed_errors, "* NO %s\r\n", error_string); - ctx->failed = TRUE; + ctx->last_error = error; return; } } @@ -175,7 +175,7 @@ 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->failed = TRUE; + ctx->last_error = MAIL_ERROR_TEMP; return; } } else { @@ -260,11 +260,8 @@ cmd_getmetadata_send_entry_tree(struct imap_getmetadata_context *ctx, if (subentry == NULL) { /* iteration finished, get to the next entry */ if (imap_metadata_iter_deinit(&ctx->iter) < 0) { - enum mail_error error; - str_printfa(ctx->delayed_errors, "* NO %s\r\n", - imap_metadata_transaction_get_last_error(ctx->trans, &error)); - ctx->failed = TRUE; + imap_metadata_transaction_get_last_error(ctx->trans, &ctx->last_error)); } return -1; } @@ -318,7 +315,7 @@ static void cmd_getmetadata_deinit(struct imap_getmetadata_context *ctx) if (ctx->list_iter != NULL && mailbox_list_iter_deinit(&ctx->list_iter) < 0) client_send_list_error(cmd, cmd->client->user->namespaces->list); - else if (ctx->failed) { + else if (ctx->last_error != 0) { client_send_tagline(cmd, "NO Getmetadata failed to send some entries"); } else if (ctx->largest_seen_size != 0) { client_send_tagline(cmd, t_strdup_printf(