]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
quota-clone: Fix assert-crash at deinit if quota_clone update fails
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 26 Jun 2018 19:33:33 +0000 (22:33 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 27 Jun 2018 12:02:10 +0000 (12:02 +0000)
The timeout isn't removed on failure, so it crashed with:
Panic: file quota-clone-plugin.c: line 257 (quota_clone_mail_user_deinit_pre): assertion failed: (quser->to_quota_flush == NULL)

src/plugins/quota-clone/quota-clone-plugin.c

index 28a38cade818b2e689f0ee739102fc7abd725bd0..489276acd98a9f44fb0e6d3acee93a1c0da78864 100644 (file)
@@ -240,7 +240,9 @@ static void quota_clone_mail_user_deinit_pre(struct mail_user *user)
                i_assert(!quser->quota_flushing);
                quota_clone_flush(user);
                dict_wait(quser->dict);
-               i_assert(quser->to_quota_flush == NULL);
+               /* If dict update fails or background calculation is running,
+                  the timeout is still set. Just forget about it. */
+               timeout_remove(&quser->to_quota_flush);
        }
        quser->module_ctx.super.deinit_pre(user);
 }