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
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;
}
}
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 {
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;
}
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(