From 231865af423b4fa4da209a0721de57840c9b91de Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Tue, 12 Jun 2018 16:07:25 +0300 Subject: [PATCH] lib-storage: Fix memory leak when mail_storage_service_next() is called multiple times dsync uses it twice for the same mail_storage_service_user. --- src/lib-storage/mail-storage-service.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 5ff7b01395..d05351b8ef 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -1506,12 +1506,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); -- 2.47.3