From d28d40b18c2e0105502cd67ac8f8be981fc02f24 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sat, 1 Apr 2017 21:54:30 +0300 Subject: [PATCH] lib-storage: Add mailbox_transaction_set_reason() --- src/lib-storage/index/index-transaction.c | 1 + src/lib-storage/mail-storage-private.h | 1 + src/lib-storage/mail-storage.c | 9 +++++++++ src/lib-storage/mail-storage.h | 4 ++++ 4 files changed, 15 insertions(+) diff --git a/src/lib-storage/index/index-transaction.c b/src/lib-storage/index/index-transaction.c index 0e12d44aaa..142f2a30a2 100644 --- a/src/lib-storage/index/index-transaction.c +++ b/src/lib-storage/index/index-transaction.c @@ -17,6 +17,7 @@ static void index_transaction_free(struct mailbox_transaction_context *t) if (array_is_created(&t->pvt_saves)) array_free(&t->pvt_saves); array_free(&t->module_contexts); + i_free(t->reason); i_free(t); } diff --git a/src/lib-storage/mail-storage-private.h b/src/lib-storage/mail-storage-private.h index f2bdb70754..44c28a1712 100644 --- a/src/lib-storage/mail-storage-private.h +++ b/src/lib-storage/mail-storage-private.h @@ -565,6 +565,7 @@ struct mail_save_private_changes { struct mailbox_transaction_context { struct mailbox *box; enum mailbox_transaction_flags flags; + char *reason; union mail_index_transaction_module_context module_ctx; struct mail_index_transaction_vfuncs super; diff --git a/src/lib-storage/mail-storage.c b/src/lib-storage/mail-storage.c index 782056fb1d..a2ee8a0b0c 100644 --- a/src/lib-storage/mail-storage.c +++ b/src/lib-storage/mail-storage.c @@ -2057,6 +2057,15 @@ void mailbox_transaction_rollback(struct mailbox_transaction_context **_t) box->transaction_count--; } +void mailbox_transaction_set_reason(struct mailbox_transaction_context *t, + const char *reason) +{ + i_assert(reason != NULL); + + i_free(t->reason); + t->reason = i_strdup(reason); +} + unsigned int mailbox_transaction_get_count(const struct mailbox *box) { return box->transaction_count; diff --git a/src/lib-storage/mail-storage.h b/src/lib-storage/mail-storage.h index 9935369997..5c8790fa40 100644 --- a/src/lib-storage/mail-storage.h +++ b/src/lib-storage/mail-storage.h @@ -648,6 +648,10 @@ int mailbox_transaction_commit_get_changes( struct mailbox_transaction_context **t, struct mail_transaction_commit_changes *changes_r); void mailbox_transaction_rollback(struct mailbox_transaction_context **t); +/* Set a reason for why the transaction is created. This is used for + logging purposes. */ +void mailbox_transaction_set_reason(struct mailbox_transaction_context *t, + const char *reason); /* Return the number of active transactions for the mailbox. */ unsigned int mailbox_transaction_get_count(const struct mailbox *box) ATTR_PURE; /* When committing transaction, drop flag/keyword updates for messages whose