changeset 22550:73e9c31c22dd

quota-clone: Always update dict ret_count and ret_bytes become zero if no quota rules are specified, so we need to update the dict anyways. Broken in 81d10aff29baede9ae4944d6c89790871123d11d
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Wed, 04 Oct 2017 10:32:17 +0300
parents 400ff84f109d
children a89fc39f2135
files src/plugins/quota-clone/quota-clone-plugin.c
diffstat 1 files changed, 6 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/quota-clone/quota-clone-plugin.c	Fri Sep 22 13:30:43 2017 +0300
+++ b/src/plugins/quota-clone/quota-clone-plugin.c	Wed Oct 04 10:32:17 2017 +0300
@@ -72,24 +72,14 @@
 		i_error("quota_clone_plugin: Failed to lookup current quota count");
 		return;
 	}
-	if (ret_bytes == 0 && ret_count == 0) {
-		/* quota isn't enabled - no point in updating it */
-		return;
-	}
 
-	/* Then update the resources that exist. The resources can't really
-	   change unless the quota backend is changed, so we don't worry about
-	   the special case of ret_count changing between 1 and 0. Note that
-	   ret_count==1 also when quota is unlimited. */
+	/* update resources always regardless of existence,
+	   FIXME: This should be fixed in v2.3 */
 	trans = dict_transaction_begin(quser->dict);
-	if (ret_bytes > 0) {
-		dict_set(trans, DICT_QUOTA_CLONE_BYTES_PATH,
-			 t_strdup_printf("%llu", (unsigned long long)bytes_value));
-	}
-	if (ret_count > 0) {
-		dict_set(trans, DICT_QUOTA_CLONE_COUNT_PATH,
-			 t_strdup_printf("%llu", (unsigned long long)count_value));
-	}
+	dict_set(trans, DICT_QUOTA_CLONE_BYTES_PATH,
+		 t_strdup_printf("%llu", (unsigned long long)bytes_value));
+	dict_set(trans, DICT_QUOTA_CLONE_COUNT_PATH,
+		 t_strdup_printf("%llu", (unsigned long long)count_value));
 	if (dict_transaction_commit(&trans) < 0)
 		i_error("quota_clone_plugin: Failed to commit dict update");
 	else