]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Add mailbox_transaction_set_reason()
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Sat, 1 Apr 2017 18:54:30 +0000 (21:54 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 3 Apr 2017 11:00:05 +0000 (14:00 +0300)
src/lib-storage/index/index-transaction.c
src/lib-storage/mail-storage-private.h
src/lib-storage/mail-storage.c
src/lib-storage/mail-storage.h

index 0e12d44aaac49e5d08541ba7feb6acc2eff0c332..142f2a30a29bd3766f502304044b1ac67fb7ad9a 100644 (file)
@@ -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);
 }
 
index f2bdb70754ee1e3d1bdaf277146de08d1f841bc4..44c28a1712c521aa7f0b5ddc01d0427751ba984c 100644 (file)
@@ -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;
index 782056fb1daf485d8a1ea067d5cf28b12b1bd639..a2ee8a0b0c37bbadcc7a5dad0ed1ba532f671a58 100644 (file)
@@ -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;
index 99353699975966243df7d67cbc61dd1c42f2f09f..5c8790fa407fbb96160e2dcf902077216b937cb4 100644 (file)
@@ -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