diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2012-07-26 21:50:13 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2012-07-26 21:50:13 +0400 |
commit | e1a8ed50131891516f5da6e22aae69a306147d38 (patch) | |
tree | 61002cf909d2d41553b94b8ed654d0f2f3567a67 /src/cfg_xml.c | |
parent | 2e615083e475c7390c667695b9e659fa5ba4da5f (diff) | |
download | rspamd-e1a8ed50131891516f5da6e22aae69a306147d38.tar.gz rspamd-e1a8ed50131891516f5da6e22aae69a306147d38.zip |
* Add lua worker type and lua worker bindings.
* Add lua utility library for basic utils.
* Fixes lua_buffer code.
Fix lua loading error.
Added some other lua utility functions.
Diffstat (limited to 'src/cfg_xml.c')
-rw-r--r-- | src/cfg_xml.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/cfg_xml.c b/src/cfg_xml.c index ad542265d..45b678548 100644 --- a/src/cfg_xml.c +++ b/src/cfg_xml.c @@ -862,7 +862,27 @@ worker_foreach_callback (gpointer k, gpointer v, gpointer ud) if (!worker_options || (worker_config = g_hash_table_lookup (worker_options, &cd->wrk->type)) == NULL || (cparam = g_hash_table_lookup (worker_config, k)) == NULL) { - msg_warn ("unregistered worker attribute '%s' for worker %s", k, g_quark_to_string (cd->wrk->type)); + /* Try to use universal handler if there is no specific handler */ + if ((cparam = g_hash_table_lookup (worker_config, "*")) != NULL) { + if (cd->wrk->ctx != NULL) { + if (param->is_list) { + cur = param->d.list; + while (cur) { + cparam->handler (cd->cfg, cd->ctx, NULL, cur->data, k, cd->wrk->ctx, cparam->offset); + cur = g_list_next (cur); + } + } + else { + cparam->handler (cd->cfg, cd->ctx, NULL, param->d.param, k, cd->wrk->ctx, cparam->offset); + } + } + else { + msg_err ("Bad error detected: worker %s has not initialized its context", g_quark_to_string (cd->wrk->type)); + } + } + else { + msg_warn ("unregistered worker attribute '%s' for worker %s", k, g_quark_to_string (cd->wrk->type)); + } } else { |