static int noit_lua_module_config(noit_module_t *mod, mtev_hash_table *options) { struct module_conf *mc; struct module_tls_conf *mtlsc; LMC_DECL(L, mod, object); mc = noit_module_get_userdata(mod); if(options) { mtevAssert(mc->options == NULL); mc->options = calloc(1, sizeof(*mc->options)); mtev_hash_init(mc->options); mtev_hash_merge_as_dict(mc->options, options); } else options = mc->options; mtlsc = __get_module_tls_conf(&mod->hdr); if(mtlsc->configured) return mtlsc->configured_return; SETUP_CALL(L, object, "config", return 0); noit_lua_setup_module(L, mod); mtev_lua_hash_to_table(L, options); lua_pcall(L, 2, 1, 0); /* If rv == 0, the caller will free options. We've * already freed options, that would be bad. fudge -> 1 */ RETURN_INT(L, object, "config", { mtlsc->configured = 1; mtlsc->configured_return = rv; });
static mtev_hook_return_t reverse_check_hook_impl(void *closure, noit_check_t *check) { mtev_hash_table *config; config = noit_check_get_module_config(check, reverse_check_module_id); if(config && mtev_hash_size(config)) { mtev_hash_merge_as_dict(check->config, config); } return MTEV_HOOK_CONTINUE; }