From 5d4055e40aee1aebdffafb7b6883f683ad1e8e2a Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 21 Nov 2019 15:38:25 +0200 Subject: [PATCH] imap: Add "mailbox" field to imap command events that use mailboxes --- src/imap/cmd-append.c | 2 ++ src/imap/cmd-create.c | 1 + src/imap/cmd-delete.c | 1 + src/imap/cmd-getmetadata.c | 1 + src/imap/cmd-resetkey.c | 1 + src/imap/cmd-select.c | 1 + src/imap/cmd-setmetadata.c | 1 + src/imap/cmd-status.c | 1 + src/imap/cmd-subscribe.c | 1 + src/imap/imap-commands-util.c | 6 ++++-- 10 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/imap/cmd-append.c b/src/imap/cmd-append.c index 920fe187e1..9b9afd4ddf 100644 --- a/src/imap/cmd-append.c +++ b/src/imap/cmd-append.c @@ -933,6 +933,8 @@ bool cmd_append(struct client_command_context *cmd) if (client_open_save_dest_box(cmd, mailbox, &ctx->box) < 0) ctx->failed = TRUE; else { + event_add_str(cmd->event, "mailbox", + mailbox_get_vname(ctx->box)); ctx->t = mailbox_transaction_begin(ctx->box, MAILBOX_TRANSACTION_FLAG_EXTERNAL | MAILBOX_TRANSACTION_FLAG_ASSIGN_UIDS, diff --git a/src/imap/cmd-create.c b/src/imap/cmd-create.c index c745fb2587..e7805fb089 100644 --- a/src/imap/cmd-create.c +++ b/src/imap/cmd-create.c @@ -38,6 +38,7 @@ bool cmd_create(struct client_command_context *cmd) } box = mailbox_alloc(ns->list, mailbox, 0); + event_add_str(cmd->event, "mailbox", mailbox_get_vname(box)); mailbox_set_reason(box, "CREATE"); if (mailbox_create(box, NULL, directory) < 0) client_send_box_error(cmd, box); diff --git a/src/imap/cmd-delete.c b/src/imap/cmd-delete.c index 929b1fe3f4..e6f37262d6 100644 --- a/src/imap/cmd-delete.c +++ b/src/imap/cmd-delete.c @@ -21,6 +21,7 @@ bool cmd_delete(struct client_command_context *cmd) return TRUE; box = mailbox_alloc(ns->list, name, 0); + event_add_str(cmd->event, "mailbox", mailbox_get_vname(box)); mailbox_set_reason(box, "DELETE"); if (mailbox_is_any_inbox(box)) { /* IMAP protocol allows this, but I think it's safer to diff --git a/src/imap/cmd-getmetadata.c b/src/imap/cmd-getmetadata.c index 3a789adee0..a24855e865 100644 --- a/src/imap/cmd-getmetadata.c +++ b/src/imap/cmd-getmetadata.c @@ -439,6 +439,7 @@ cmd_getmetadata_try_mailbox(struct imap_getmetadata_context *ctx, struct mail_namespace *ns, const char *mailbox) { ctx->box = mailbox_alloc(ns->list, mailbox, MAILBOX_FLAG_READONLY); + event_add_str(ctx->cmd->event, "mailbox", mailbox_get_vname(ctx->box)); mailbox_set_reason(ctx->box, "GETMETADATA"); if (mailbox_open(ctx->box) < 0) return -1; diff --git a/src/imap/cmd-resetkey.c b/src/imap/cmd-resetkey.c index a2e6e79fcd..3a58ef4a22 100644 --- a/src/imap/cmd-resetkey.c +++ b/src/imap/cmd-resetkey.c @@ -49,6 +49,7 @@ cmd_resetkey_mailbox(struct client_command_context *cmd, /* open mailbox */ box = mailbox_alloc(ns->list, mailbox, flags); + event_add_str(cmd->event, "mailbox", mailbox_get_vname(box)); mailbox_set_reason(box, "RESETKEY"); if (mailbox_open(box) < 0) { client_send_box_error(cmd, box); diff --git a/src/imap/cmd-select.c b/src/imap/cmd-select.c index db7f5ef3ac..619fa82b57 100644 --- a/src/imap/cmd-select.c +++ b/src/imap/cmd-select.c @@ -283,6 +283,7 @@ select_open(struct imap_select_context *ctx, const char *mailbox, bool readonly) else flags |= MAILBOX_FLAG_DROP_RECENT; ctx->box = mailbox_alloc(ctx->ns->list, mailbox, flags); + event_add_str(ctx->cmd->event, "mailbox", mailbox_get_vname(ctx->box)); mailbox_set_reason(ctx->box, readonly ? "EXAMINE" : "SELECT"); if (mailbox_open(ctx->box) < 0) { client_send_box_error(ctx->cmd, ctx->box); diff --git a/src/imap/cmd-setmetadata.c b/src/imap/cmd-setmetadata.c index d5fe3e5ce1..841507c815 100644 --- a/src/imap/cmd-setmetadata.c +++ b/src/imap/cmd-setmetadata.c @@ -320,6 +320,7 @@ cmd_setmetadata_mailbox(struct imap_setmetadata_context *ctx, return TRUE; } } + event_add_str(ctx->cmd->event, "mailbox", mailbox_get_vname(ctx->box)); ctx->trans = imap_metadata_transaction_begin(ctx->box); return cmd_setmetadata_start(ctx); } diff --git a/src/imap/cmd-status.c b/src/imap/cmd-status.c index 20c6f6fb12..d90aef2a3e 100644 --- a/src/imap/cmd-status.c +++ b/src/imap/cmd-status.c @@ -35,6 +35,7 @@ bool cmd_status(struct client_command_context *cmd) if (ns == NULL) return TRUE; + event_add_str(cmd->event, "mailbox", mailbox); selected_mailbox = client->mailbox != NULL && mailbox_equals(client->mailbox, ns, mailbox); if (imap_status_get(cmd, ns, mailbox, &items, &result) < 0) { diff --git a/src/imap/cmd-subscribe.c b/src/imap/cmd-subscribe.c index e02856b47f..761b47875c 100644 --- a/src/imap/cmd-subscribe.c +++ b/src/imap/cmd-subscribe.c @@ -49,6 +49,7 @@ bool cmd_subscribe_full(struct client_command_context *cmd, bool subscribe) return TRUE; box = mailbox_alloc(ns->list, mailbox, 0); + event_add_str(cmd->event, "mailbox", mailbox_get_vname(box)); mailbox_set_reason(box, subscribe ? "SUBSCRIBE" : "UNSUBSCRIBE"); if (subscribe) { if (!subscribe_is_valid_name(cmd, box)) { diff --git a/src/imap/imap-commands-util.c b/src/imap/imap-commands-util.c index 3e6f0827b7..0a2f3543d2 100644 --- a/src/imap/imap-commands-util.c +++ b/src/imap/imap-commands-util.c @@ -66,9 +66,11 @@ client_find_namespace(struct client_command_context *cmd, const char **mailbox) bool client_verify_open_mailbox(struct client_command_context *cmd) { - if (cmd->client->mailbox != NULL) + if (cmd->client->mailbox != NULL) { + event_add_str(cmd->event, "mailbox", + mailbox_get_vname(cmd->client->mailbox)); return TRUE; - else { + } else { client_send_tagline(cmd, "BAD No mailbox selected."); return FALSE; } -- 2.47.3