Use it to log a debug message when mailbox is being opened.
/* 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;
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)
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;
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 */