dovecot-2.1: quota: Added quota_ignore_save_errors plugin setting.

dovecot at dovecot.org dovecot at dovecot.org
Mon Jul 23 14:23:54 EEST 2012


details:   http://hg.dovecot.org/dovecot-2.1/rev/a946a37af082
changeset: 14627:a946a37af082
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Jul 23 14:23:32 2012 +0300
description:
quota: Added quota_ignore_save_errors plugin setting.
If mail is being saved but current quota usage lookup fails with internal
error, save the mail anyway instead of failing.

diffstat:

 src/plugins/quota/quota-private.h |  1 +
 src/plugins/quota/quota-storage.c |  5 +++--
 src/plugins/quota/quota.c         |  2 ++
 3 files changed, 6 insertions(+), 2 deletions(-)

diffs (45 lines):

diff -r 35ae9569de5a -r a946a37af082 src/plugins/quota/quota-private.h
--- a/src/plugins/quota/quota-private.h	Tue Jul 17 16:20:20 2012 +0300
+++ b/src/plugins/quota/quota-private.h	Mon Jul 23 14:23:32 2012 +0300
@@ -25,6 +25,7 @@
 			  uoff_t size, bool *too_large_r);
 
 	const char *quota_exceeded_msg;
+	unsigned int ignore_save_errors:1;
 	unsigned int debug:1;
 };
 
diff -r 35ae9569de5a -r a946a37af082 src/plugins/quota/quota-storage.c
--- a/src/plugins/quota/quota-storage.c	Tue Jul 17 16:20:20 2012 +0300
+++ b/src/plugins/quota/quota-storage.c	Mon Jul 23 14:23:32 2012 +0300
@@ -147,7 +147,7 @@
 	} else {
 		mail_storage_set_critical(t->box->storage,
 					  "Internal quota calculation error");
-		return -1;
+		return qt->quota->set->ignore_save_errors ? 0 : -1;
 	}
 }
 
@@ -204,7 +204,8 @@
 		} else if (ret < 0) {
 			mail_storage_set_critical(t->box->storage,
 				"Internal quota calculation error");
-			return -1;
+			if (!qt->quota->set->ignore_save_errors)
+				return -1;
 		}
 	}
 
diff -r 35ae9569de5a -r a946a37af082 src/plugins/quota/quota.c
--- a/src/plugins/quota/quota.c	Tue Jul 17 16:20:20 2012 +0300
+++ b/src/plugins/quota/quota.c	Mon Jul 23 14:23:32 2012 +0300
@@ -195,6 +195,8 @@
 	quota_set->debug = user->mail_debug;
 	quota_set->quota_exceeded_msg =
 		mail_user_plugin_getenv(user, "quota_exceeded_message");
+	quota_set->ignore_save_errors =
+		mail_user_plugin_getenv(user, "quota_ignore_save_errors") != NULL;
 	if (quota_set->quota_exceeded_msg == NULL)
 		quota_set->quota_exceeded_msg = DEFAULT_QUOTA_EXCEEDED_MSG;
 


More information about the dovecot-cvs mailing list