Mercurial > dovecot > core-2.2
changeset 21877:d703b0fde204
lib-storage: Add mailbox_set_reason()
Use it to log a debug message when mailbox is being opened.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sat, 01 Apr 2017 21:16:37 +0300 |
parents | ccbdafa83dbc |
children | e78a42ead488 |
files | src/lib-storage/mail-storage-private.h src/lib-storage/mail-storage.c src/lib-storage/mail-storage.h |
diffstat | 3 files changed, 18 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/mail-storage-private.h Mon Mar 27 18:05:29 2017 +0300 +++ b/src/lib-storage/mail-storage-private.h Sat Apr 01 21:16:37 2017 +0300 @@ -346,6 +346,8 @@ /* Filled lazily when mailbox is opened, use mailbox_get_index_path() to access it */ const char *_index_path; + /* Reason for why mailbox is being accessed or NULL if unknown. */ + const char *reason; /* default vfuncs for new struct mails. */ const struct mail_vfuncs *mail_vfuncs;
--- a/src/lib-storage/mail-storage.c Mon Mar 27 18:05:29 2017 +0300 +++ b/src/lib-storage/mail-storage.c Sat Apr 01 21:16:37 2017 +0300 @@ -819,6 +819,13 @@ return box; } +void mailbox_set_reason(struct mailbox *box, const char *reason) +{ + i_assert(reason != NULL); + + box->reason = p_strdup(box->pool, reason); +} + static bool mailbox_is_autocreated(struct mailbox *box) { if (box->inbox_user) @@ -1125,6 +1132,12 @@ if (box->opened) return 0; + + if (box->storage->set->mail_debug && box->reason != NULL) { + i_debug("%s: Mailbox opened because: %s", + box->vname, box->reason); + } + switch (box->open_error) { case 0: break;
--- a/src/lib-storage/mail-storage.h Mon Mar 27 18:05:29 2017 +0300 +++ b/src/lib-storage/mail-storage.h Sat Apr 01 21:16:37 2017 +0300 @@ -507,6 +507,9 @@ struct mailbox *mailbox_alloc_guid(struct mailbox_list *list, const guid_128_t guid, enum mailbox_flags flags); +/* Set a human-readable reason for why this mailbox is being accessed. + This is used for logging purposes. */ +void mailbox_set_reason(struct mailbox *box, const char *reason); /* Get mailbox existence state. If auto_boxes=FALSE, return MAILBOX_EXISTENCE_NONE for autocreated mailboxes that haven't been physically created yet */