aboutsummaryrefslogtreecommitdiffstats
path: root/src/cfg_xml.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2012-07-26 21:50:13 +0400
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2012-07-26 21:50:13 +0400
commite1a8ed50131891516f5da6e22aae69a306147d38 (patch)
tree61002cf909d2d41553b94b8ed654d0f2f3567a67 /src/cfg_xml.c
parent2e615083e475c7390c667695b9e659fa5ba4da5f (diff)
downloadrspamd-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.c22
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 {