From 5f53de79e4b8dc67d1d75a957a77fe395a715754 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 12 Dec 2012 00:25:44 +0100 Subject: [PATCH] MINOR: config: improve error checking on TCP stick-table tracking Commit 5d5b5d added support for multiple types to track-sc* but forgot to check that the types are compatible with the stick-tables. --- src/cfgparse.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/cfgparse.c b/src/cfgparse.c index f1c45a005..f7dcf061b 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -6263,6 +6263,12 @@ int check_config_validity() curproxy->id, trule->act_prm.trk_ctr.table.n ? trule->act_prm.trk_ctr.table.n : curproxy->id); cfgerr++; } + else if (!stktable_compatible_sample(trule->act_prm.trk_ctr.expr, target->table.type)) { + Alert("Proxy '%s': stick-table '%s' uses a type incompatible with the 'track-sc%d' rule.\n", + curproxy->id, trule->act_prm.trk_ctr.table.n ? trule->act_prm.trk_ctr.table.n : curproxy->id, + trule->action == TCP_ACT_TRK_SC1 ? 1 : 2); + cfgerr++; + } else { free(trule->act_prm.trk_ctr.table.n); trule->act_prm.trk_ctr.table.t = &target->table; @@ -6296,6 +6302,12 @@ int check_config_validity() curproxy->id, trule->act_prm.trk_ctr.table.n ? trule->act_prm.trk_ctr.table.n : curproxy->id); cfgerr++; } + else if (!stktable_compatible_sample(trule->act_prm.trk_ctr.expr, target->table.type)) { + Alert("Proxy '%s': stick-table '%s' uses a type incompatible with the 'track-sc%d' rule.\n", + curproxy->id, trule->act_prm.trk_ctr.table.n ? trule->act_prm.trk_ctr.table.n : curproxy->id, + trule->action == TCP_ACT_TRK_SC1 ? 1 : 2); + cfgerr++; + } else { free(trule->act_prm.trk_ctr.table.n); trule->act_prm.trk_ctr.table.t = &target->table;