CLEANUP: filters: use the function registration to initialize all proxies
Function flt_init() was called in the main init code path, now we move
it to the list of initializers and we can unexport flt_init().
diff --git a/src/filters.c b/src/filters.c
index 91404a4..14ea0f1 100644
--- a/src/filters.c
+++ b/src/filters.c
@@ -251,7 +251,7 @@
* the configuration parsing. Filters can finish to fill their config. Returns
* (ERR_ALERT|ERR_FATAL) if an error occurs, 0 otherwise.
*/
-int
+static int
flt_init(struct proxy *proxy)
{
struct flt_conf *fconf;
@@ -263,6 +263,24 @@
return 0;
}
+/* Calls flt_init() for all proxies, see above */
+static int
+flt_init_all()
+{
+ struct proxy *px;
+ int err_code = 0;
+
+ for (px = proxy; px; px = px->next) {
+ err_code |= flt_init(px);
+ if (err_code & (ERR_ABORT|ERR_FATAL)) {
+ Alert("Failed to initialize filters for proxy '%s'.\n",
+ px->id);
+ return err_code;
+ }
+ }
+ return 0;
+}
+
/*
* Calls 'check' callback for all filters attached to a proxy. This happens
* after the configuration parsing but before filters initialization. Returns
@@ -1078,6 +1096,7 @@
{
pool2_filter = create_pool("filter", sizeof(struct filter), MEM_F_SHARED);
cfg_register_keywords(&cfg_kws);
+ hap_register_post_check(flt_init_all);
}
__attribute__((destructor))
diff --git a/src/haproxy.c b/src/haproxy.c
index 5d43cf3..2337341 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -936,15 +936,6 @@
ha_wurfl_init();
#endif
- for (px = proxy; px; px = px->next) {
- err_code |= flt_init(px);
- if (err_code & (ERR_ABORT|ERR_FATAL)) {
- Alert("Failed to initialize filters for proxy '%s'.\n",
- px->id);
- exit(1);
- }
- }
-
list_for_each_entry(pcf, &post_check_list, list) {
err_code |= pcf->fct();
if (err_code & (ERR_ABORT|ERR_FATAL))