summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/conffile.c7
-rw-r--r--src/ulogd.c26
2 files changed, 24 insertions, 9 deletions
diff --git a/src/conffile.c b/src/conffile.c
index 955956a..e55ff30 100644
--- a/src/conffile.c
+++ b/src/conffile.c
@@ -158,7 +158,12 @@ int config_parse_file(const char *section, struct config_keyset *kset)
}
if (!found) {
- err = -ERRSECTION;
+ if (kset->num_ces == 0) {
+ /* If there are no options, then no section isnt an error. */
+ err = 0;
+ } else {
+ err = -ERRSECTION;
+ }
goto cpf_error;
}
diff --git a/src/ulogd.c b/src/ulogd.c
index c844767..b146f94 100644
--- a/src/ulogd.c
+++ b/src/ulogd.c
@@ -856,19 +856,29 @@ create_stack_resolve_keys(struct ulogd_pluginstance_stack *stack)
/* pre-configuration pass */
llist_for_each_entry_reverse(pi_cur, &stack->list, list) {
+ int ret;
+
ulogd_log(ULOGD_DEBUG, "traversing plugin `%s'\n",
pi_cur->plugin->name);
/* call plugin to tell us which keys it requires in
* given configuration */
if (pi_cur->plugin->configure) {
- int ret = pi_cur->plugin->configure(pi_cur,
- stack);
- if (ret < 0) {
- ulogd_log(ULOGD_ERROR, "error during "
- "configure of plugin %s\n",
- pi_cur->plugin->name);
- return ret;
- }
+ ret = pi_cur->plugin->configure(pi_cur, stack);
+ } else {
+ struct config_keyset empty_kset = {.num_ces=0};
+ struct config_keyset *kset = &empty_kset;
+
+ if (pi_cur->config_kset)
+ kset = pi_cur->config_kset;
+
+ ret = ulogd_parse_configfile(pi_cur->id, kset);
+ }
+
+ if (ret < 0) {
+ ulogd_log(ULOGD_ERROR, "error during "
+ "configure of plugin %s\n",
+ pi_cur->plugin->name);
+ return ret;
}
}