diff --git a/src/main/config_parser.rl b/src/main/config_parser.rl index 138fb9d..d61507f 100644 --- a/src/main/config_parser.rl +++ b/src/main/config_parser.rl @@ -684,17 +684,9 @@ static gboolean config_parser_include(liServer *srv, GList *ctx_stack, gchar *pa g_array_append_val(al->data.list, a); } /* setup action */ - else if (NULL != g_hash_table_lookup(srv->setups, name->data.string->str)) { + else if (ctx->in_setup_block && NULL != g_hash_table_lookup(srv->setups, name->data.string->str)) { _printf("%s", "... which is a setup action\n"); - if (!ctx->in_setup_block) { - WARNING(srv, "action %s can only be called in a setup block", name->data.string->str); - li_value_free(name); - if (val) - li_value_free(val); - return FALSE; - } - if (!li_call_setup(srv, name->data.string->str, val)) { li_value_free(name); if (val) @@ -706,17 +698,9 @@ static gboolean config_parser_include(liServer *srv, GList *ctx_stack, gchar *pa li_value_free(val); } /* normal action */ - else if (NULL != g_hash_table_lookup(srv->actions, name->data.string->str)) { + else if (!ctx->in_setup_block && NULL != g_hash_table_lookup(srv->actions, name->data.string->str)) { _printf("%s", "... which is a normal action\n"); - if (ctx->in_setup_block) { - WARNING(srv, "action %s can't be called in a setup block", name->data.string->str); - li_value_free(name); - if (val) - li_value_free(val); - return FALSE; - } - al = g_queue_peek_head(ctx->action_list_stack); a = li_create_action(srv, srv->main_worker, name->data.string->str, val); li_value_free(val); @@ -762,7 +746,13 @@ static gboolean config_parser_include(liServer *srv, GList *ctx_stack, gchar *pa g_array_append_val(al->data.list, a); } } else { - WARNING(srv, "unknown action %s", name->data.string->str); + if (!ctx->in_setup_block && NULL != g_hash_table_lookup(srv->setups, name->data.string->str)) { + WARNING(srv, "action %s can only be called in a setup block", name->data.string->str); + } else if (ctx->in_setup_block && NULL != g_hash_table_lookup(srv->actions, name->data.string->str)) { + WARNING(srv, "action %s can't be called in a setup block", name->data.string->str); + } else { + WARNING(srv, "unknown action %s", name->data.string->str); + } if (val) li_value_free(val); li_value_free(name);