extern struct pool_head *pool2_filter;
-int flt_init(struct proxy *p);
void flt_deinit(struct proxy *p);
int flt_check(struct proxy *p);
* 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;
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
{
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))
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))