diff --git a/src/action.c b/src/action.c index 54d27a0f4..7574fba03 100644 --- a/src/action.c +++ b/src/action.c @@ -51,6 +51,11 @@ int check_trk_action(struct act_rule *rule, struct proxy *px, char **err) trk_idx(rule->action)); return 0; } + else if (px->bind_proc & ~target->bind_proc) { + memprintf(err, "stick-table '%s' referenced by 'track-sc%d' rule not present on all processes covered by proxy '%s'", + target->id, trk_idx(rule->action), px->id); + return 0; + } else { free(rule->arg.trk_ctr.table.n); rule->arg.trk_ctr.table.t = &target->table; diff --git a/src/cfgparse.c b/src/cfgparse.c index 3e8a7f5c3..a51771d44 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -2649,6 +2649,11 @@ int check_config_validity() curproxy->id, mrule->table.name ? mrule->table.name : curproxy->id); cfgerr++; } + else if (curproxy->bind_proc & ~target->bind_proc) { + ha_alert("Proxy '%s': stick-table '%s' referenced 'stick-store' rule not present on all processes covered by proxy '%s'.\n", + curproxy->id, target->id, curproxy->id); + return 0; + } else { free((void *)mrule->table.name); mrule->table.t = &(target->table); @@ -2682,6 +2687,11 @@ int check_config_validity() curproxy->id, mrule->table.name ? mrule->table.name : curproxy->id); cfgerr++; } + else if (curproxy->bind_proc & ~target->bind_proc) { + ha_alert("Proxy '%s': stick-table '%s' referenced 'stick-store' rule not present on all processes covered by proxy '%s'.\n", + curproxy->id, target->id, curproxy->id); + return 0; + } else { free((void *)mrule->table.name); mrule->table.t = &(target->table); diff --git a/src/sample.c b/src/sample.c index 88217501d..963cb597d 100644 --- a/src/sample.c +++ b/src/sample.c @@ -1264,6 +1264,12 @@ int smp_resolve_args(struct proxy *p) break; } + if (p->bind_proc & ~px->bind_proc) { + ha_alert("parsing [%s:%d] : stick-table '%s' not present on all processes covered by proxy '%s'.\n", + cur->file, cur->line, px->id, p->id); + return 0; + } + free(arg->data.str.area); arg->data.str.area = NULL; arg->unresolved = 0;