dovecot-2.2: quota-status: Added quota_status_(success|nouser|ov...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Apr 5 00:13:33 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/c7da636a09c4
changeset: 16193:c7da636a09c4
user: Timo Sirainen <tss at iki.fi>
date: Thu Apr 04 23:56:55 2013 +0300
description:
quota-status: Added quota_status_(success|nouser|overquota) settings.
diffstat:
src/plugins/quota/quota-status.c | 26 ++++++++++++++++++--------
1 files changed, 18 insertions(+), 8 deletions(-)
diffs (51 lines):
diff -r 2493ec20df8c -r c7da636a09c4 src/plugins/quota/quota-status.c
--- a/src/plugins/quota/quota-status.c Tue Apr 02 11:52:36 2013 +0300
+++ b/src/plugins/quota/quota-status.c Thu Apr 04 23:56:55 2013 +0300
@@ -79,7 +79,7 @@
struct mail_storage_service_input input;
struct mail_storage_service_user *service_user;
struct mail_user *user;
- const char *error;
+ const char *value = NULL, *error;
int ret;
if (client->recipient == NULL) {
@@ -94,21 +94,31 @@
&service_user, &user, &error);
restrict_access_allow_coredumps(TRUE);
if (ret == 0) {
- o_stream_send_str(client->conn.output,
- "action=REJECT Unknown user\n\n");
+ value = mail_user_plugin_getenv(user, "quota_status_nouser");
+ if (value == NULL)
+ value = "REJECT Unknown user";
} else if (ret > 0) {
- if ((ret = quota_check(user, client->size, &error)) > 0)
- o_stream_send_str(client->conn.output, "action=OK\n\n");
- else if (ret == 0) {
- o_stream_send_str(client->conn.output, t_strdup_printf(
- "action=552 5.2.2 %s\n\n", error));
+ if ((ret = quota_check(user, client->size, &error)) > 0) {
+ /* under quota */
+ value = mail_user_plugin_getenv(user, "quota_status_success");
+ if (value == NULL)
+ value = "OK";
+ } else if (ret == 0) {
+ /* over quota */
+ value = mail_user_plugin_getenv(user, "quota_status_overquota");
+ if (value == NULL)
+ value = t_strdup_printf("action=552 5.2.2 %s\n\n", error);
}
mail_user_unref(&user);
mail_storage_service_user_free(&service_user);
}
if (ret < 0) {
+ /* temporary failure */
o_stream_send_str(client->conn.output, t_strdup_printf(
"action=DEFER_IF_PERMIT %s\n\n", error));
+ } else {
+ o_stream_send_str(client->conn.output,
+ t_strdup_printf("action=%s\n\n", value));
}
}
More information about the dovecot-cvs
mailing list