mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 15:47:01 +02:00
CLEANUP: stream: use server_find_by_addr() in sticking_rule_find_target()
This makes this function a bit less of a mess by no longer manipulating the low-level server address nodes nor the proxy lock.
This commit is contained in:
parent
616c10f608
commit
36f339d2fe
18
src/stream.c
18
src/stream.c
@ -1252,7 +1252,7 @@ static inline void sticking_rule_find_target(struct stream *s,
|
|||||||
struct proxy *px = s->be;
|
struct proxy *px = s->be;
|
||||||
struct dict_entry *de;
|
struct dict_entry *de;
|
||||||
void *ptr;
|
void *ptr;
|
||||||
struct server *srv;
|
struct server *srv = NULL;
|
||||||
int id;
|
int id;
|
||||||
|
|
||||||
/* Look for the server name previously stored in <t> stick-table */
|
/* Look for the server name previously stored in <t> stick-table */
|
||||||
@ -1262,21 +1262,13 @@ static inline void sticking_rule_find_target(struct stream *s,
|
|||||||
HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
|
HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
|
||||||
|
|
||||||
if (de) {
|
if (de) {
|
||||||
struct ebpt_node *node;
|
if (t->server_key_type == STKTABLE_SRV_NAME)
|
||||||
|
|
||||||
if (t->server_key_type == STKTABLE_SRV_NAME) {
|
|
||||||
srv = server_find_by_name(px, de->value.key);
|
srv = server_find_by_name(px, de->value.key);
|
||||||
|
else if (t->server_key_type == STKTABLE_SRV_ADDR)
|
||||||
|
srv = server_find_by_addr(px, de->value.key);
|
||||||
|
|
||||||
if (srv)
|
if (srv)
|
||||||
goto found;
|
goto found;
|
||||||
} else if (t->server_key_type == STKTABLE_SRV_ADDR) {
|
|
||||||
HA_RWLOCK_RDLOCK(PROXY_LOCK, &px->lock);
|
|
||||||
node = ebis_lookup(&px->used_server_addr, de->value.key);
|
|
||||||
HA_RWLOCK_RDUNLOCK(PROXY_LOCK, &px->lock);
|
|
||||||
if (node) {
|
|
||||||
srv = container_of(node, struct server, addr_node);
|
|
||||||
goto found;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Look for the server ID */
|
/* Look for the server ID */
|
||||||
|
Loading…
Reference in New Issue
Block a user