]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
quota: Remove support for Maildir++-specific quota rules
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 14 Aug 2024 07:25:28 +0000 (10:25 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:00 +0000 (10:40 +0200)
Using quota_rule = *:backend=10C,20S worked previously with Maildir++
quota to read a limit of 10 messages and 20 bytes of quota. If necessary,
this parsing can be replaced by using userdb lua script.

src/plugins/quota/quota-maildir.c
src/plugins/quota/quota-private.h
src/plugins/quota/quota-util.c

index dd398f170a3ae3af003860136febb73fce0ada25..75d79070cffae3d7c907add260000cb3729e2f81 100644 (file)
@@ -758,28 +758,6 @@ static void maildir_quota_deinit(struct quota_root *_root)
        i_free(root);
 }
 
-static bool
-maildir_quota_parse_rule(struct quota_root_settings *root_set ATTR_UNUSED,
-                        struct quota_rule *rule,
-                        const char *str, const char **error_r)
-{
-       uint64_t bytes, count;
-
-       if (strcmp(str, "NOQUOTA") == 0) {
-               bytes = 0;
-               count = 0;
-       } else if (!maildir_parse_limit(str, &bytes, &count)) {
-               *error_r = t_strdup_printf(
-                       "quota-maildir: Invalid Maildir++ quota rule \"%s\"",
-                       str);
-               return FALSE;
-       }
-
-       rule->bytes_limit = bytes;
-       rule->count_limit = count;
-       return TRUE;
-}
-
 static void
 maildir_quota_root_namespace_added(struct quota_root *_root,
                                   struct mail_namespace *ns)
@@ -893,7 +871,6 @@ struct quota_backend quota_backend_maildir = {
                .alloc = maildir_quota_alloc,
                .init = maildir_quota_init,
                .deinit = maildir_quota_deinit,
-               .parse_rule = maildir_quota_parse_rule,
                .namespace_added = maildir_quota_namespace_added,
                .get_resources = maildir_quota_root_get_resources,
                .get_resource = maildir_quota_get_resource,
index 9ea49c139a3da4fcbbd53364a20ee5d1f0fe148c..388af5445084243824866a66803b2015e9f4fbf7 100644 (file)
@@ -54,10 +54,6 @@ struct quota_backend_vfuncs {
                    const char **error_r);
        void (*deinit)(struct quota_root *root);
 
-       bool (*parse_rule)(struct quota_root_settings *root_set,
-                          struct quota_rule *rule,
-                          const char *str, const char **error_r);
-
        /* called once for each namespace */
        void (*namespace_added)(struct quota *quota,
                                struct mail_namespace *ns);
index 3046dbb3888e98308e488a8ea4ea361fa1e795c8..583726609afced40f20ced9cfe4fa63df419c9ae 100644 (file)
@@ -228,7 +228,7 @@ int quota_root_add_rule(struct event *event, pool_t pool,
                        const char *rule_def, const char **error_r)
 {
        struct quota_rule *rule;
-       const char *p, *mailbox_mask, *value;
+       const char *p, *mailbox_mask;
        int ret = 0;
 
        p = strchr(rule_def, ':');
@@ -258,20 +258,10 @@ int quota_root_add_rule(struct event *event, pool_t pool,
                return 0;
        }
 
-       if (str_begins(p, "backend=", &value)) {
-               if (root_set->backend->v.parse_rule == NULL) {
-                       *error_r = "backend rule not supported";
-                       ret = -1;
-               } else if (!root_set->backend->v.parse_rule(root_set, rule,
-                                                           value, error_r))
-                       ret = -1;
-       } else {
-               bool relative_rule = rule != &root_set->default_rule;
-
-               if (quota_rule_parse_limits(event, root_set, rule, p, rule_def,
-                                           relative_rule, error_r) < 0)
-                       ret = -1;
-       }
+       bool relative_rule = rule != &root_set->default_rule;
+       if (quota_rule_parse_limits(event, root_set, rule, p, rule_def,
+                                   relative_rule, error_r) < 0)
+               ret = -1;
 
        quota_root_recalculate_relative_rules(event, root_set,
                                              root_set->default_rule.bytes_limit,