]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Fix memory leak when mail_storage_service_next() is called multiple...
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 12 Jun 2018 13:07:25 +0000 (16:07 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 6 Jul 2018 11:42:29 +0000 (14:42 +0300)
dsync uses it twice for the same mail_storage_service_user.

src/lib-storage/mail-storage-service.c

index ea00ede77e88df1aa2a41abd222967f1eb355f08..ee0bcf3d8710d61452ec827038efb4f61edeb566 100644 (file)
@@ -1516,12 +1516,13 @@ mail_storage_service_next_real(struct mail_storage_service_ctx *ctx,
 
        /* create ioloop context regardless of logging. it's also used by
           stats plugin. */
-       user->ioloop_ctx = io_loop_context_new(current_ioloop);
-       io_loop_context_add_callbacks(user->ioloop_ctx,
+       if (user->ioloop_ctx == NULL) {
+               user->ioloop_ctx = io_loop_context_new(current_ioloop);
+               io_loop_context_add_callbacks(user->ioloop_ctx,
                                      mail_storage_service_io_activate_user_cb,
                                      mail_storage_service_io_deactivate_user_cb,
                                      user);
-
+       }
        if ((user->flags & MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT) == 0)
                mail_storage_service_init_log(ctx, user, &priv);