]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
conf: fix creeping memory consumption upon reload
authorDaniel Salzman <daniel.salzman@nic.cz>
Fri, 18 May 2018 14:34:44 +0000 (16:34 +0200)
committerDaniel Salzman <daniel.salzman@nic.cz>
Mon, 21 May 2018 12:08:37 +0000 (14:08 +0200)
src/knot/conf/base.c
src/libknot/control/control.c

index e929b3490ee2e343186085b0024c5427762f6f45..c12fbc52b3ed81aaf076b7edfce11b6c509c3976 100644 (file)
@@ -30,7 +30,6 @@
 #include "contrib/mempattern.h"
 #include "contrib/sockaddr.h"
 #include "contrib/string.h"
-#include "contrib/ucw/mempool.h"
 
 // The active configuration.
 conf_t *s_conf;
@@ -170,7 +169,7 @@ int conf_new(
                ret = KNOT_ENOMEM;
                goto new_error;
        }
-       mm_ctx_mempool(out->mm, MM_DEFAULT_BLKSIZE);
+       mm_ctx_init(out->mm);
 
        // Initialize query modules list.
        out->query_modules = mm_alloc(out->mm, sizeof(list_t));
@@ -396,7 +395,6 @@ void conf_free(
        }
        if (conf->io.zones != NULL) {
                trie_free(conf->io.zones);
-               mm_free(conf->mm, conf->io.zones);
        }
 
        conf_mod_load_purge(conf, false);
@@ -409,7 +407,6 @@ void conf_free(
                        conf->api->deinit(conf->db);
                }
                if (conf->mm != NULL) {
-                       mp_delete(conf->mm->ctx);
                        free(conf->mm);
                }
        }
index 8591519f50a8040e6805f8103f6c3fff20c3407c..af68cfe9a238048ea0516d8e4dc96333a99c2ea8 100644 (file)
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2016 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/*  Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -126,12 +126,8 @@ static void reset_buffers(knot_ctl_t *ctx)
 
 static void clean_data(knot_ctl_t *ctx)
 {
-       for (knot_ctl_idx_t i = 0; i < KNOT_CTL_IDX__COUNT; i++) {
-               if (ctx->data[i] != NULL) {
-                       mm_free(&ctx->mm, (void *)ctx->data[i]);
-                       ctx->data[i] = NULL;
-               }
-       }
+       mp_flush(ctx->mm.ctx);
+       memset(ctx->data, 0, sizeof(ctx->data));
 }
 
 static void close_sock(int *sock)