dovecot-2.2: Memory leak fixes.
dovecot at dovecot.org
dovecot at dovecot.org
Thu Jun 13 03:26:34 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/5ed2f41431c4
changeset: 16503:5ed2f41431c4
user: Timo Sirainen <tss at iki.fi>
date: Thu Jun 13 03:26:22 2013 +0300
description:
Memory leak fixes.
diffstat:
src/doveadm/client-connection.c | 2 ++
src/doveadm/dsync/dsync-brain-mailbox.c | 1 +
src/doveadm/dsync/dsync-brain.c | 2 ++
src/doveadm/dsync/dsync-ibc-pipe.c | 5 +++++
src/doveadm/dsync/dsync-mailbox-export.c | 1 +
src/doveadm/main.c | 1 +
src/lib-fs/fs-api.c | 6 ++++++
7 files changed, 18 insertions(+), 0 deletions(-)
diffs (109 lines):
diff -r 235be95cb378 -r 5ed2f41431c4 src/doveadm/client-connection.c
--- a/src/doveadm/client-connection.c Wed Jun 12 23:01:26 2013 +0300
+++ b/src/doveadm/client-connection.c Thu Jun 13 03:26:22 2013 +0300
@@ -74,6 +74,7 @@
"Client sent unknown parameter: %c",
cmd->name, c);
ctx->v.deinit(ctx);
+ pool_unref(&ctx->pool);
return NULL;
}
}
@@ -86,6 +87,7 @@
i_error("doveadm %s: Client sent unknown parameter: %s",
cmd->name, argv[0]);
ctx->v.deinit(ctx);
+ pool_unref(&ctx->pool);
return NULL;
}
ctx->args = (const void *)argv;
diff -r 235be95cb378 -r 5ed2f41431c4 src/doveadm/dsync/dsync-brain-mailbox.c
--- a/src/doveadm/dsync/dsync-brain-mailbox.c Wed Jun 12 23:01:26 2013 +0300
+++ b/src/doveadm/dsync/dsync-brain-mailbox.c Thu Jun 13 03:26:22 2013 +0300
@@ -197,6 +197,7 @@
uint64_t last_common_modseq, last_common_pvt_modseq;
i_assert(brain->log_scan == NULL);
+ i_assert(brain->box_exporter == NULL);
last_common_uid = brain->mailbox_state.last_common_uid;
last_common_modseq = brain->mailbox_state.last_common_modseq;
diff -r 235be95cb378 -r 5ed2f41431c4 src/doveadm/dsync/dsync-brain.c
--- a/src/doveadm/dsync/dsync-brain.c Wed Jun 12 23:01:26 2013 +0300
+++ b/src/doveadm/dsync/dsync-brain.c Thu Jun 13 03:26:22 2013 +0300
@@ -186,6 +186,8 @@
dsync_brain_sync_mailbox_deinit(brain);
if (brain->local_tree_iter != NULL)
dsync_mailbox_tree_iter_deinit(&brain->local_tree_iter);
+ dsync_mailbox_tree_deinit(&brain->local_mailbox_tree);
+ dsync_mailbox_tree_deinit(&brain->remote_mailbox_tree);
if (brain->mailbox_states_iter != NULL)
hash_table_iterate_deinit(&brain->mailbox_states_iter);
hash_table_destroy(&brain->mailbox_states);
diff -r 235be95cb378 -r 5ed2f41431c4 src/doveadm/dsync/dsync-ibc-pipe.c
--- a/src/doveadm/dsync/dsync-ibc-pipe.c Wed Jun 12 23:01:26 2013 +0300
+++ b/src/doveadm/dsync/dsync-ibc-pipe.c Thu Jun 13 03:26:22 2013 +0300
@@ -134,6 +134,7 @@
static void dsync_ibc_pipe_deinit(struct dsync_ibc *ibc)
{
struct dsync_ibc_pipe *pipe = (struct dsync_ibc_pipe *)ibc;
+ struct item *item;
pool_t *poolp;
if (pipe->remote != NULL) {
@@ -143,6 +144,10 @@
if (pipe->pop_pool != NULL)
pool_unref(&pipe->pop_pool);
+ array_foreach_modifiable(&pipe->item_queue, item) {
+ if (item->pool != NULL)
+ pool_unref(&item->pool);
+ }
array_foreach_modifiable(&pipe->pools, poolp)
pool_unref(poolp);
array_free(&pipe->pools);
diff -r 235be95cb378 -r 5ed2f41431c4 src/doveadm/dsync/dsync-mailbox-export.c
--- a/src/doveadm/dsync/dsync-mailbox-export.c Wed Jun 12 23:01:26 2013 +0300
+++ b/src/doveadm/dsync/dsync-mailbox-export.c Thu Jun 13 03:26:22 2013 +0300
@@ -844,6 +844,7 @@
if (exporter->attr.value_stream != NULL)
i_stream_unref(&exporter->attr.value_stream);
hash_table_destroy(&exporter->export_guids);
+ hash_table_destroy(&exporter->changes);
*error_r = t_strdup(exporter->error);
pool_unref(&exporter->pool);
diff -r 235be95cb378 -r 5ed2f41431c4 src/doveadm/main.c
--- a/src/doveadm/main.c Wed Jun 12 23:01:26 2013 +0300
+++ b/src/doveadm/main.c Thu Jun 13 03:26:22 2013 +0300
@@ -61,6 +61,7 @@
client_connection_destroy(&doveadm_client);
doveadm_mail_deinit();
doveadm_unload_modules();
+ doveadm_print_deinit();
}
int main(int argc, char *argv[])
diff -r 235be95cb378 -r 5ed2f41431c4 src/lib-fs/fs-api.c
--- a/src/lib-fs/fs-api.c Wed Jun 12 23:01:26 2013 +0300
+++ b/src/lib-fs/fs-api.c Thu Jun 13 03:26:22 2013 +0300
@@ -43,6 +43,11 @@
array_append(&fs_classes, &fs_class, 1);
}
+static void fs_classes_deinit(void)
+{
+ array_free(&fs_classes);
+}
+
static void fs_classes_init(void)
{
i_array_init(&fs_classes, 8);
@@ -50,6 +55,7 @@
fs_class_register(&fs_class_metawrap);
fs_class_register(&fs_class_sis);
fs_class_register(&fs_class_sis_queue);
+ lib_atexit(fs_classes_deinit);
}
static const struct fs *fs_class_find(const char *driver)
More information about the dovecot-cvs
mailing list