bcb4e51a409d94ae670de96afb8483a4f7855294Stephan Bosch/* Copyright (c) 2006-2018 Dovecot authors, see the included COPYING file */
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen
08d6658a4e2ec8104cd1307f6baa75fdb07a24f8Mark Washenberger#include "imap-common.h"
08d6658a4e2ec8104cd1307f6baa75fdb07a24f8Mark Washenberger#include "imap-commands.h"
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainenbool cmd_x_cancel(struct client_command_context *cmd)
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen{
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen struct client_command_context *cancel_cmd;
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen const char *tag;
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen /* <tag> */
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen if (!client_read_string_args(cmd, 1, &tag))
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen return FALSE;
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen cancel_cmd = cmd->client->command_queue;
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen for (; cancel_cmd != NULL; cancel_cmd = cancel_cmd->next) {
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen if (cancel_cmd->tag != NULL && cancel_cmd != cmd &&
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen strcmp(cancel_cmd->tag, tag) == 0) {
2d340205d897e23fbecb40c8e63a4ca49bd6739bTimo Sirainen client_command_cancel(&cancel_cmd);
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen client_send_tagline(cmd, "OK Command cancelled.");
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen return TRUE;
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen }
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen }
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen client_send_tagline(cmd, "NO Command tag not found.");
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen return TRUE;
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen}
01e451386c5f25189b13569ef4c9d2a19ee90d49Timo Sirainen