(void)mailbox_create(box, NULL, FALSE);
mailbox_close(box);
ret = box->v.open(box);
+ if (ret < 0 && !box->storage->user->inbox_open_error_logged) {
+ box->storage->user->inbox_open_error_logged = TRUE;
+ i_error("Opening INBOX failed: %s",
+ mail_storage_get_last_error(box->storage, NULL));
+ }
} T_END;
if (ret < 0) {
struct mailbox_sync_status *status_r)
{
struct mailbox_sync_context *ctx = *_ctx;
+ struct mail_storage *storage = ctx->box->storage;
+ const char *errormsg;
+ enum mail_error error;
+ int ret;
*_ctx = NULL;
memset(status_r, 0, sizeof(*status_r));
- return ctx->box->v.sync_deinit(ctx, status_r);
+ ret = ctx->box->v.sync_deinit(ctx, status_r);
+ if (ret < 0 && ctx->box->inbox &&
+ !storage->user->inbox_open_error_logged) {
+ errormsg = mail_storage_get_last_error(storage, &error);
+ if (error == MAIL_ERROR_NOTPOSSIBLE) {
+ storage->user->inbox_open_error_logged = TRUE;
+ i_error("Syncing INBOX failed: %s", errormsg);
+ }
+ }
+ return ret;
}
int mailbox_sync(struct mailbox *box, enum mailbox_sync_flags flags)
unsigned int initialized:1;
/* Shortcut to mail_storage_settings.mail_debug */
unsigned int mail_debug:1;
+ /* If INBOX can't be opened, log an error, but only once. */
+ unsigned int inbox_open_error_logged:1;
};
struct mail_user_module_register {