void client_send_command_error(struct client *client, const char *msg)
{
- const char *error;
+ const char *error, *cmd;
int fatal;
if (msg == NULL) {
return;
}
}
- error = t_strconcat("BAD Error in IMAP command: ", msg, NULL);
+
+ if (client->cmd_tag == NULL)
+ error = t_strconcat("BAD Error in IMAP tag: ", msg, NULL);
+ else if (client->cmd_name == NULL)
+ error = t_strconcat("BAD Error in IMAP command: ", msg, NULL);
+ else {
+ cmd = str_ucase(t_strdup_noconst(client->cmd_name));
+ error = t_strconcat("BAD Error in IMAP command ",
+ cmd, ": ", msg, NULL);
+ }
client->cmd_error = TRUE;
client_send_tagline(client, error);
for (i = 0; i < data_size; i++) {
if (data[i] == '\n') {
client->input_skip_line = FALSE;
- i_stream_skip(client->input, i+1);
+ i++;
break;
}
}
+ i_stream_skip(client->input, i);
return !client->input_skip_line;
}
if (client->cmd_func == NULL) {
/* unknown command */
- client_send_command_error(client, t_strconcat(
- "Unknown command '", client->cmd_name, "'", NULL));
+ client_send_command_error(client, "Unknown command.");
client->input_skip_line = TRUE;
_client_reset_command(client);
} else {
messageset = imap_arg_string(&args[0]);
if (messageset == NULL ||
(args[1].type != IMAP_ARG_LIST && args[1].type != IMAP_ARG_ATOM)) {
- client_send_command_error(client, "Invalid FETCH arguments.");
+ client_send_command_error(client, "Invalid arguments.");
return TRUE;
}