Skip to content
Snippets Groups Projects
Commit 4435edb1 authored by Marek Vavruša's avatar Marek Vavruša
Browse files

daemon: fixed leaks and bad ffi module cleanup

parent cec48f28
Branches
Tags
No related merge requests found
......@@ -298,7 +298,9 @@ void engine_deinit(struct engine *engine)
kr_zonecut_deinit(&engine->resolver.root_hints);
kr_cache_close(&engine->resolver.cache);
lru_deinit(engine->resolver.cache_rtt);
free(engine->resolver.cache_rtt);
lru_deinit(engine->resolver.cache_rep);
free(engine->resolver.cache_rep);
/* Unload modules. */
for (size_t i = 0; i < engine->modules.len; ++i) {
......
......@@ -99,14 +99,15 @@ static int l_ffi_init(struct kr_module *module)
static int l_ffi_deinit(struct kr_module *module)
{
lua_State *L = l_ffi_preface(module, "deinit");
if (!L) {
return 0;
/* Deinit the module in Lua (if possible) */
int ret = 0;
lua_State *L = module->lib;
if (l_ffi_preface(module, "deinit")) {
ret = l_ffi_call(L, 1);
}
int ret = l_ffi_call(L, 1);
/* Free the layer API wrapper */
lua_rawgeti(L, LUA_REGISTRYINDEX, (intptr_t)module->data);
lua_getfield(L, -1, "_layercdata");
lua_getfield(L, -1, "_layer_capi");
free(lua_touserdata(L, -1));
lua_pop(L, 2);
/* Unref module and unset 'lib', so the module
......@@ -242,8 +243,8 @@ int ffimodule_register_lua(struct engine *engine, struct kr_module *module, cons
/* Create FFI module with trampolined functions. */
memset(module, 0, sizeof(*module));
module->name = strdup(name);
REGISTER_FFI_CALL(L, module->init, "init", &l_ffi_init);
REGISTER_FFI_CALL(L, module->deinit, "deinit", &l_ffi_deinit);
module->init = &l_ffi_init;
module->deinit = &l_ffi_deinit;
REGISTER_FFI_CALL(L, module->layer, "layer", &l_ffi_layer);
module->data = (void *)(intptr_t)luaL_ref(L, LUA_REGISTRYINDEX);
module->lib = L;
......
......@@ -303,6 +303,7 @@ static char* hint_root(void *env, struct kr_module *module, const char *args)
default: continue;
}
}
json_delete(root_node);
}
/* Return current root hints */
char *result = NULL;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment