]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: config: improve error checking on TCP stick-table tracking
authorWilly Tarreau <w@1wt.eu>
Tue, 11 Dec 2012 23:25:44 +0000 (00:25 +0100)
committerWilly Tarreau <w@1wt.eu>
Tue, 11 Dec 2012 23:25:44 +0000 (00:25 +0100)
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

index f1c45a00531a578e3e6810f770e2388c0070d483..f7dcf061b5ac64dff38236e15c5cbf83150cb899 100644 (file)
@@ -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;