Skip to content

Commit

Permalink
[Minor] Sort lua modules and use GPtrArray instead of GList
Browse files Browse the repository at this point in the history
  • Loading branch information
vstakhov committed Sep 7, 2023
1 parent df23899 commit 2b78f53
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 26 deletions.
2 changes: 1 addition & 1 deletion src/libserver/cfg_file.h
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,7 @@ struct rspamd_config {

gboolean compat_messages; /**< use old messages in the protocol (array) */

GList *script_modules; /**< linked list of script modules to load */
GPtrArray *script_modules; /**< a list of script modules to load */
GHashTable *explicit_modules; /**< modules that should be always loaded */

GList *filters; /**< linked list of all filters */
Expand Down
24 changes: 12 additions & 12 deletions src/libserver/cfg_rcl.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -920,6 +920,15 @@ rspamd_rcl_lua_handler(rspamd_mempool_t *pool, const ucl_object_t *obj,
return TRUE;
}

static int
rspamd_lua_mod_sort_fn(gconstpointer a, gconstpointer b)
{
auto *m1 = *(const script_module **) a;
auto *m2 = *(const script_module **) b;

return strcmp(m1->name, m2->name);
}

gboolean
rspamd_rcl_add_lua_plugins_path(struct rspamd_rcl_sections_map *sections,
struct rspamd_config *cfg,
Expand Down Expand Up @@ -949,18 +958,7 @@ rspamd_rcl_add_lua_plugins_path(struct rspamd_rcl_sections_map *sections,
return false;
}

if (cfg->script_modules == nullptr) {
cfg->script_modules = g_list_append(cfg->script_modules,
cur_mod);
rspamd_mempool_add_destructor(cfg->cfg_pool,
(rspamd_mempool_destruct_t) g_list_free,
cfg->script_modules);
}
else {
cfg->script_modules = g_list_append(cfg->script_modules,
cur_mod);
}

g_ptr_array_add(cfg->script_modules, cur_mod);
sections->lua_modules_seen.insert(fname.string());

return true;
Expand Down Expand Up @@ -994,6 +992,8 @@ rspamd_rcl_add_lua_plugins_path(struct rspamd_rcl_sections_map *sections,
}
}

g_ptr_array_sort(cfg->script_modules, rspamd_lua_mod_sort_fn);

return TRUE;
}

Expand Down
2 changes: 2 additions & 0 deletions src/libserver/cfg_utils.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ rspamd_config_new(enum rspamd_config_init_flags flags)
cfg->heartbeat_interval = 10.0;

cfg->enable_css_parser = true;
cfg->script_modules = g_ptr_array_new();

REF_INIT_RETAIN(cfg, rspamd_config_free);

Expand Down Expand Up @@ -398,6 +399,7 @@ void rspamd_config_free(struct rspamd_config *cfg)

rspamd_re_cache_unref(cfg->re_cache);
g_ptr_array_free(cfg->c_modules, TRUE);
g_ptr_array_free(cfg->script_modules, TRUE);

if (cfg->monitored_ctx) {
rspamd_monitored_ctx_destroy(cfg->monitored_ctx);
Expand Down
16 changes: 3 additions & 13 deletions src/lua/lua_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -1109,25 +1109,20 @@ gboolean
rspamd_init_lua_filters(struct rspamd_config *cfg, bool force_load, bool strict)
{
struct rspamd_config **pcfg;
GList *cur;
struct script_module *module;
lua_State *L = cfg->lua_state;
gint err_idx;
gint err_idx, i;

pcfg = lua_newuserdata(L, sizeof(struct rspamd_config *));
rspamd_lua_setclass(L, "rspamd{config}", -1);
*pcfg = cfg;
lua_setglobal(L, "rspamd_config");

cur = g_list_first(cfg->script_modules);

while (cur) {
module = cur->data;

PTR_ARRAY_FOREACH(cfg->script_modules, i, module)
{
if (module->path) {
if (!force_load) {
if (!rspamd_config_is_module_enabled(cfg, module->name)) {
cur = g_list_next(cur);
continue;
}
}
Expand All @@ -1154,7 +1149,6 @@ rspamd_init_lua_filters(struct rspamd_config *cfg, bool force_load, bool strict)
return FALSE;
}

cur = g_list_next(cur);
continue;
}

Expand Down Expand Up @@ -1182,7 +1176,6 @@ rspamd_init_lua_filters(struct rspamd_config *cfg, bool force_load, bool strict)
return FALSE;
}

cur = g_list_next(cur);
continue;
}

Expand All @@ -1202,7 +1195,6 @@ rspamd_init_lua_filters(struct rspamd_config *cfg, bool force_load, bool strict)
return FALSE;
}

cur = g_list_next(cur);
continue;
}

Expand All @@ -1215,8 +1207,6 @@ rspamd_init_lua_filters(struct rspamd_config *cfg, bool force_load, bool strict)

lua_pop(L, 1); /* Error function */
}

cur = g_list_next(cur);
}

return TRUE;
Expand Down

0 comments on commit 2b78f53

Please sign in to comment.