On Tue, 2010-06-22 at 17:07 -0500, Mike Abbott wrote:> The quota plugin in 2.0.beta6 leaks 2KB "quota settings" pools.
Here
> is a patch to plug this leak, assuming you intended the caller of
> quota_init to retain ownership of the quota_set. If on the other hand
> you intended for quota_init to assume ownership of the quota_set, then
> the quota_settings_deinit call belongs in quota_deinit.
Yeah.. I guess quota-storage.c is better, although maybe cleanest would
be to have refcounts there, but since it's not really necessary it's too
much trouble. :)
> --- a/src/plugins/quota/quota-storage.c (beta6)
> +++ b/src/plugins/quota/quota-storage.c (patched)
> @@ -427,6 +427,7 @@
> {
> struct quota_user *quser = QUOTA_USER_CONTEXT(user);
>
> + quota_settings_deinit(&quser->quota->set);
> quota_deinit(&quser->quota);
> quser->module_ctx.super.deinit(user);
> }
Anyway, I don't think you should deinit quota settings before
quota_deinit() is finished. The quota root deinit()s might still want to
access the settings. http://hg.dovecot.org/dovecot-2.0/rev/37df22ecd572