Skip to content

Commit

Permalink
imap,lib-storage: Rename error_r sent to clients as client_error_r
Browse files Browse the repository at this point in the history
  • Loading branch information
mrannanj committed Jan 21, 2019
1 parent a7148a9 commit 937ca27
Show file tree
Hide file tree
Showing 18 changed files with 107 additions and 95 deletions.
35 changes: 19 additions & 16 deletions src/imap/cmd-append.c
Expand Up @@ -170,19 +170,20 @@ cmd_append_catenate_mpurl(struct client_command_context *cmd,
struct cmd_append_context *ctx = cmd->context;
struct imap_msgpart_open_result mpresult;
uoff_t newsize;
const char *error;
const char *client_error;
int ret;

/* catenate URL */
ret = imap_msgpart_url_read_part(mpurl, &mpresult, &error);
ret = imap_msgpart_url_read_part(mpurl, &mpresult, &client_error);
if (ret < 0) {
client_send_box_error(cmd, ctx->box);
return -1;
}
if (ret == 0) {
/* invalid url, abort */
client_send_tagline(cmd,
t_strdup_printf("NO [BADURL %s] %s.", caturl, error));
t_strdup_printf("NO [BADURL %s] %s.",
caturl, client_error));
return -1;
}
if (mpresult.size == 0) {
Expand Down Expand Up @@ -231,22 +232,23 @@ cmd_append_catenate_url(struct client_command_context *cmd, const char *caturl)
{
struct cmd_append_context *ctx = cmd->context;
struct imap_msgpart_url *mpurl;
const char *error;
const char *client_error;
int ret;

if (ctx->failed)
return -1;

ret = imap_msgpart_url_parse(cmd->client->user, cmd->client->mailbox,
caturl, &mpurl, &error);
caturl, &mpurl, &client_error);
if (ret < 0) {
client_send_box_error(cmd, ctx->box);
return -1;
}
if (ret == 0) {
/* invalid url, abort */
client_send_tagline(cmd,
t_strdup_printf("NO [BADURL %s] %s.", caturl, error));
t_strdup_printf("NO [BADURL %s] %s.",
caturl, client_error));
return -1;
}
ret = cmd_append_catenate_mpurl(cmd, caturl, mpurl);
Expand Down Expand Up @@ -385,7 +387,7 @@ static bool cmd_append_continue_catenate(struct client_command_context *cmd)
struct client *client = cmd->client;
struct cmd_append_context *ctx = cmd->context;
const struct imap_arg *args;
const char *msg;
const char *client_error;
enum imap_parser_error parse_error;
bool nonsync = FALSE;
int ret;
Expand All @@ -407,19 +409,20 @@ static bool cmd_append_continue_catenate(struct client_command_context *cmd)
IMAP_PARSE_FLAG_INSIDE_LIST, &args);
} while (ret > 0 && !catenate_args_can_stop(ctx, args));
if (ret == -1) {
msg = imap_parser_get_error(ctx->save_parser, &parse_error);
client_error = imap_parser_get_error(ctx->save_parser,
&parse_error);
switch (parse_error) {
case IMAP_PARSE_ERROR_NONE:
i_unreached();
case IMAP_PARSE_ERROR_LITERAL_TOO_BIG:
client_send_line(client, t_strconcat("* BYE ",
(client->set->imap_literal_minus ? "[TOOBIG] " : ""),
msg, NULL));
client_disconnect(client, msg);
client_error, NULL));
client_disconnect(client, client_error);
break;
default:
if (!ctx->failed)
client_send_command_error(cmd, msg);
client_send_command_error(cmd, client_error);
}
client->input_skip_line = TRUE;
cmd_append_finish(ctx);
Expand Down Expand Up @@ -719,7 +722,7 @@ static bool cmd_append_parse_new_msg(struct client_command_context *cmd)
struct client *client = cmd->client;
struct cmd_append_context *ctx = cmd->context;
const struct imap_arg *args;
const char *msg;
const char *client_error;
enum imap_parser_error parse_error;
unsigned int arg_min_count;
bool nonsync, last_literal;
Expand Down Expand Up @@ -755,18 +758,18 @@ static bool cmd_append_parse_new_msg(struct client_command_context *cmd)
!cmd_append_args_can_stop(ctx, args, &last_literal));
if (ret == -1) {
if (!ctx->failed) {
msg = imap_parser_get_error(ctx->save_parser, &parse_error);
client_error = imap_parser_get_error(ctx->save_parser, &parse_error);
switch (parse_error) {
case IMAP_PARSE_ERROR_NONE:
i_unreached();
case IMAP_PARSE_ERROR_LITERAL_TOO_BIG:
client_send_line(client, t_strconcat("* BYE ",
(client->set->imap_literal_minus ? "[TOOBIG] " : ""),
msg, NULL));
client_disconnect(client, msg);
client_error, NULL));
client_disconnect(client, client_error);
break;
default:
client_send_command_error(cmd, msg);
client_send_command_error(cmd, client_error);
}
}
cmd_append_finish(ctx);
Expand Down
7 changes: 4 additions & 3 deletions src/imap/cmd-delete.c
Expand Up @@ -8,7 +8,7 @@ bool cmd_delete(struct client_command_context *cmd)
struct client *client = cmd->client;
struct mail_namespace *ns;
struct mailbox *box;
const char *name, *errstr;
const char *name, *client_error;
enum mail_error error;
bool disconnect = FALSE;

Expand Down Expand Up @@ -40,12 +40,13 @@ bool cmd_delete(struct client_command_context *cmd)
if (mailbox_delete(box) == 0)
client_send_tagline(cmd, "OK Delete completed.");
else {
errstr = mailbox_get_last_error(box, &error);
client_error = mailbox_get_last_error(box, &error);
if (error != MAIL_ERROR_EXISTS)
client_send_box_error(cmd, box);
else {
/* mailbox has children */
client_send_tagline(cmd, t_strdup_printf("NO %s", errstr));
client_send_tagline(cmd, t_strdup_printf("NO %s",
client_error));
}
}
mailbox_free(&box);
Expand Down
14 changes: 7 additions & 7 deletions src/imap/cmd-fetch.c
Expand Up @@ -212,7 +212,7 @@ static bool cmd_fetch_finish(struct imap_fetch_context *ctx,
}

if (imap_fetch_end(ctx) < 0) {
const char *errstr;
const char *client_error;

if (cmd->client->output->closed) {
/* If we're canceling we need to finish this command
Expand All @@ -228,27 +228,27 @@ static bool cmd_fetch_finish(struct imap_fetch_context *ctx,
}

if (ctx->error == MAIL_ERROR_NONE)
errstr = mailbox_get_last_error(cmd->client->mailbox, &error);
client_error = mailbox_get_last_error(cmd->client->mailbox, &error);
else {
errstr = ctx->errstr;
client_error = ctx->errstr;
error = ctx->error;
}
if (error == MAIL_ERROR_CONVERSION) {
/* BINARY found unsupported Content-Transfer-Encoding */
tagged_reply = t_strdup_printf(
"NO ["IMAP_RESP_CODE_UNKNOWN_CTE"] %s", errstr);
"NO ["IMAP_RESP_CODE_UNKNOWN_CTE"] %s", client_error);
} else if (error == MAIL_ERROR_INVALIDDATA) {
/* Content was invalid */
tagged_reply = t_strdup_printf(
"NO ["IMAP_RESP_CODE_PARSE"] %s", errstr);
"NO ["IMAP_RESP_CODE_PARSE"] %s", client_error);
} else if (cmd->client->set->parsed_fetch_failure != IMAP_CLIENT_FETCH_FAILURE_NO_AFTER ||
imap_fetch_is_failed_retry(ctx)) {
/* By default we never want to reply NO to FETCH
requests, because many IMAP clients become confused
about what they should on NO. A disconnection causes
less confusion. */
client_disconnect_with_error(cmd->client,
t_strconcat("FETCH failed: ", errstr, NULL));
t_strconcat("FETCH failed: ", client_error, NULL));
imap_fetch_free(&ctx);
return TRUE;
} else {
Expand All @@ -257,7 +257,7 @@ static bool cmd_fetch_finish(struct imap_fetch_context *ctx,
we avoid infinitely retries from client.) */
imap_fetch_add_failed_uids(ctx);
tagged_reply = t_strdup_printf(
"NO ["IMAP_RESP_CODE_SERVERBUG"] %s", errstr);
"NO ["IMAP_RESP_CODE_SERVERBUG"] %s", client_error);
}
}
imap_fetch_free(&ctx);
Expand Down
7 changes: 4 additions & 3 deletions src/imap/cmd-genurlauth.c
Expand Up @@ -23,7 +23,7 @@ bool cmd_genurlauth(struct client_command_context *cmd)
response = t_str_new(1024);
str_append(response, "* GENURLAUTH");
for (;;) {
const char *url_rump, *mechanism, *url, *error;
const char *url_rump, *mechanism, *url, *client_error;

if (IMAP_ARG_IS_EOL(args))
break;
Expand All @@ -34,12 +34,13 @@ bool cmd_genurlauth(struct client_command_context *cmd)
}

ret = imap_urlauth_generate(cmd->client->urlauth_ctx,
mechanism, url_rump, &url, &error);
mechanism, url_rump, &url,
&client_error);
if (ret <= 0) {
if (ret < 0)
client_send_internal_error(cmd);
else
client_send_command_error(cmd, error);
client_send_command_error(cmd, client_error);
return TRUE;
}

Expand Down
6 changes: 3 additions & 3 deletions src/imap/cmd-getmetadata.c
Expand Up @@ -83,16 +83,16 @@ static bool
imap_metadata_parse_entry_names(struct imap_getmetadata_context *ctx,
const struct imap_arg *entries)
{
const char *value, *error;
const char *value, *client_error;

p_array_init(&ctx->entries, ctx->cmd->pool, 4);
for (; !IMAP_ARG_IS_EOL(entries); entries++) {
if (!imap_arg_get_astring(entries, &value)) {
client_send_command_error(ctx->cmd, "Entry isn't astring");
return FALSE;
}
if (!imap_metadata_verify_entry_name(value, &error)) {
client_send_command_error(ctx->cmd, error);
if (!imap_metadata_verify_entry_name(value, &client_error)) {
client_send_command_error(ctx->cmd, client_error);
return FALSE;
}

Expand Down
12 changes: 6 additions & 6 deletions src/imap/cmd-notify.c
Expand Up @@ -542,19 +542,19 @@ bool cmd_notify(struct client_command_context *cmd)
}

if ((ctx->global_used_events & UNSUPPORTED_EVENTS) != 0) {
string_t *str = t_str_new(128);
string_t *client_error = t_str_new(128);
unsigned int i;

str_append(str, "NO [BADEVENT");
str_append(client_error, "NO [BADEVENT");
for (i = 0; i < N_ELEMENTS(imap_notify_event_names); i++) {
if ((ctx->global_used_events & (1 << i)) != 0 &&
((1 << i) & UNSUPPORTED_EVENTS) != 0) {
str_append_c(str, ' ');
str_append(str, imap_notify_event_names[i]);
str_append_c(client_error, ' ');
str_append(client_error, imap_notify_event_names[i]);
}
}
str_append(str, "] Unsupported NOTIFY events.");
client_send_tagline(cmd, str_c(str));
str_append(client_error, "] Unsupported NOTIFY events.");
client_send_tagline(cmd, str_c(client_error));
pool_unref(&pool);
return TRUE;
}
Expand Down
10 changes: 5 additions & 5 deletions src/imap/cmd-select.c
Expand Up @@ -368,7 +368,7 @@ bool cmd_select_full(struct client_command_context *cmd, bool readonly)
struct client *client = cmd->client;
struct imap_select_context *ctx;
const struct imap_arg *args, *list_args;
const char *mailbox, *error;
const char *mailbox, *client_error;
int ret;

/* <mailbox> [(optional parameters)] */
Expand All @@ -383,20 +383,20 @@ bool cmd_select_full(struct client_command_context *cmd, bool readonly)

ctx = p_new(cmd->pool, struct imap_select_context, 1);
ctx->cmd = cmd;
ctx->ns = client_find_namespace_full(cmd->client, &mailbox, &error);
ctx->ns = client_find_namespace_full(cmd->client, &mailbox, &client_error);
if (ctx->ns == NULL) {
/* send * OK [CLOSED] before the tagged reply */
close_selected_mailbox(client);
client_send_tagline(cmd, error);
client_send_tagline(cmd, client_error);
return TRUE;
}

if (imap_arg_get_list(&args[1], &list_args)) {
if (!select_parse_options(ctx, list_args, &error)) {
if (!select_parse_options(ctx, list_args, &client_error)) {
select_context_free(ctx);
/* send * OK [CLOSED] before the tagged reply */
close_selected_mailbox(client);
client_send_command_error(ctx->cmd, error);
client_send_command_error(ctx->cmd, client_error);
return TRUE;
}
}
Expand Down
23 changes: 12 additions & 11 deletions src/imap/cmd-setmetadata.c
Expand Up @@ -45,7 +45,7 @@ cmd_setmetadata_parse_entryvalue(struct imap_setmetadata_context *ctx,
const struct imap_arg **value_r)
{
const struct imap_arg *args;
const char *name, *error;
const char *name, *client_error;
enum imap_parser_error parse_error;
int ret;

Expand All @@ -72,15 +72,16 @@ cmd_setmetadata_parse_entryvalue(struct imap_setmetadata_context *ctx,
if (ret < 0) {
if (ret == -2)
return 0;
error = imap_parser_get_error(ctx->parser, &parse_error);
client_error = imap_parser_get_error(ctx->parser, &parse_error);
switch (parse_error) {
case IMAP_PARSE_ERROR_NONE:
i_unreached();
case IMAP_PARSE_ERROR_LITERAL_TOO_BIG:
client_disconnect_with_error(ctx->cmd->client, error);
client_disconnect_with_error(ctx->cmd->client,
client_error);
break;
default:
client_send_command_error(ctx->cmd, error);
client_send_command_error(ctx->cmd, client_error);
break;
}
return -1;
Expand All @@ -94,8 +95,8 @@ cmd_setmetadata_parse_entryvalue(struct imap_setmetadata_context *ctx,
return -1;
}
if (!ctx->cmd_error_sent &&
!imap_metadata_verify_entry_name(name, &error)) {
client_send_command_error(ctx->cmd, error);
!imap_metadata_verify_entry_name(name, &client_error)) {
client_send_command_error(ctx->cmd, client_error);
ctx->cmd_error_sent = TRUE;
}
if (ctx->cmd_error_sent) {
Expand Down Expand Up @@ -214,7 +215,7 @@ cmd_setmetadata_entry(struct imap_setmetadata_context *ctx,
static bool cmd_setmetadata_continue(struct client_command_context *cmd)
{
struct imap_setmetadata_context *ctx = cmd->context;
const char *entry, *error_string;
const char *entry, *client_error;
enum mail_error error;
const struct imap_arg *value;
int ret;
Expand Down Expand Up @@ -249,16 +250,16 @@ static bool cmd_setmetadata_continue(struct client_command_context *cmd)
} else if (ctx->storage_failure) {
if (ctx->box == NULL)
client_disconnect_if_inconsistent(cmd->client);
error_string = imap_metadata_transaction_get_last_error
client_error = imap_metadata_transaction_get_last_error
(ctx->trans, &error);
client_send_tagline(cmd,
imap_get_error_string(cmd, error_string, error));
imap_get_error_string(cmd, client_error, error));
} else if (imap_metadata_transaction_commit(&ctx->trans,
&error, &error_string) < 0) {
&error, &client_error) < 0) {
if (ctx->box == NULL)
client_disconnect_if_inconsistent(cmd->client);
client_send_tagline(cmd,
imap_get_error_string(cmd, error_string, error));
imap_get_error_string(cmd, client_error, error));
} else {
client_send_tagline(cmd, "OK Setmetadata completed.");
}
Expand Down

0 comments on commit 937ca27

Please sign in to comment.