dovecot-2.0: lib-storage: If INBOX can't be opened/synced, log a...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Mar 27 05:01:20 EET 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/0f0b8e1a2c55
changeset: 11009:0f0b8e1a2c55
user: Timo Sirainen <tss at iki.fi>
date: Sat Mar 27 05:01:17 2010 +0200
description:
lib-storage: If INBOX can't be opened/synced, log an error once.
diffstat:
src/lib-storage/mail-storage.c | 20 +++++++++++++++++++-
src/lib-storage/mail-user.h | 2 ++
2 files changed, 21 insertions(+), 1 deletions(-)
diffs (53 lines):
diff -r 6891d20929ca -r 0f0b8e1a2c55 src/lib-storage/mail-storage.c
--- a/src/lib-storage/mail-storage.c Sat Mar 27 04:58:49 2010 +0200
+++ b/src/lib-storage/mail-storage.c Sat Mar 27 05:01:17 2010 +0200
@@ -538,6 +538,11 @@
(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) {
@@ -860,11 +865,24 @@
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)
diff -r 6891d20929ca -r 0f0b8e1a2c55 src/lib-storage/mail-user.h
--- a/src/lib-storage/mail-user.h Sat Mar 27 04:58:49 2010 +0200
+++ b/src/lib-storage/mail-user.h Sat Mar 27 05:01:17 2010 +0200
@@ -45,6 +45,8 @@
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 {
More information about the dovecot-cvs
mailing list