MEDIUM: stick-table: lookup table names using trees.
This will speed up config parsing time when many stick-table references
are used, as well as stick-table manipulations from the CLI.
diff --git a/src/stick_table.c b/src/stick_table.c
index 9a3e855..92c4dd4 100644
--- a/src/stick_table.c
+++ b/src/stick_table.c
@@ -716,9 +716,15 @@
struct proxy *find_stktable(const char *name)
{
struct proxy *px;
+ struct ebpt_node *node;
+
+ for (node = ebis_lookup(&proxy_by_name, name); node; node = ebpt_next(node)) {
+ px = container_of(node, struct proxy, conf.by_name);
+
+ if (strcmp(px->id, name) != 0)
+ break;
- for (px = proxy; px; px = px->next) {
- if (px->table.size && strcmp(px->id, name) == 0)
+ if (px->table.size)
return px;
}
return NULL;