diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2013-11-09 22:36:18 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2013-11-09 22:36:18 +0000 |
commit | b0684dcde39eac33709c16ee27db197a1dfa5724 (patch) | |
tree | 6df26af33b598d21bab8e95957b5dfafc5e89419 /src/cfg_rcl.c | |
parent | b12ed1722e350bd55a13e34f2eb6f8d41134581d (diff) | |
download | rspamd-b0684dcde39eac33709c16ee27db197a1dfa5724.tar.gz rspamd-b0684dcde39eac33709c16ee27db197a1dfa5724.zip |
Unbreak lua_worker with ucl.
Diffstat (limited to 'src/cfg_rcl.c')
-rw-r--r-- | src/cfg_rcl.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/cfg_rcl.c b/src/cfg_rcl.c index 41a1cd8c8..3f419ceb8 100644 --- a/src/cfg_rcl.c +++ b/src/cfg_rcl.c @@ -507,6 +507,11 @@ rspamd_rcl_worker_handler (struct config_file *cfg, ucl_object_t *obj, } } } + if (wparser->def_obj_parser != NULL) { + if (! wparser->def_obj_parser (obj, wparser->def_ud)) { + return FALSE; + } + } } cfg->workers = g_list_prepend (cfg->workers, wrk); @@ -1393,3 +1398,21 @@ rspamd_rcl_register_worker_option (struct config_file *cfg, gint type, const gch nhandler->handler = handler; HASH_ADD_STR (nparser->parsers, name, nhandler); } + + +void +rspamd_rcl_register_worker_parser (struct config_file *cfg, gint type, + gboolean (*func)(ucl_object_t *, gpointer), gpointer ud) +{ + struct rspamd_worker_cfg_parser *nparser; + HASH_FIND_INT (cfg->wrk_parsers, &type, nparser); + if (nparser == NULL) { + /* Allocate new parser for this worker */ + nparser = memory_pool_alloc0 (cfg->cfg_pool, sizeof (struct rspamd_worker_cfg_parser)); + nparser->type = type; + HASH_ADD_INT (cfg->wrk_parsers, type, nparser); + } + + nparser->def_obj_parser = func; + nparser->def_ud = ud; +} |