mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 13:51:26 +02:00
MINOR: peers: Do not emit global stick-table names.
This commit "MINOR: stick-table: Add prefixes to stick-table names" prepended the "peers" section name to stick-table names declared in such "peers" sections followed by a '/' character. This is not this name which must be sent over the network to avoid collisions with stick-table name declared as backends. As the '/' character is forbidden as first character of a backend name, we prefix the stick-table names declared in peers sections only with a '/' character. With such declarations: peers mypeers table t1 backend t1 stick-table ... peers mypeers at peer protocol level, "t1" declared as stick-table in "mypeers" section is different of "t1" stick-table declared as backend. In src/peers.c, only two modifications were required: use ->nid stktable struct member in place of ->id in peer_prepare_switchmsg() to prepare the stick-table definition messages. Same thing in peer_treat_definemsg() to treat a stick-table definition messages.
This commit is contained in:
parent
c02766a267
commit
7fcc24d4ef
@ -883,7 +883,7 @@ int cfg_parse_peers(const char *file, int linenum, char **args, int kwm)
|
||||
* followed by a '/' character and the table name argument.
|
||||
*/
|
||||
chunk_reset(&trash);
|
||||
if (!chunk_strcpy(&trash, curpeers->id) || !chunk_memcat(&trash, "/", 1)) {
|
||||
if (!chunk_strcpy(&trash, curpeers->id)) {
|
||||
ha_alert("parsing [%s:%d]: '%s %s' : stick-table name too long.\n",
|
||||
file, linenum, args[0], args[1]);
|
||||
err_code |= ERR_ALERT | ERR_FATAL;
|
||||
@ -891,7 +891,7 @@ int cfg_parse_peers(const char *file, int linenum, char **args, int kwm)
|
||||
}
|
||||
|
||||
prefix_len = trash.data;
|
||||
if (!chunk_strcat(&trash, args[1])) {
|
||||
if (!chunk_memcat(&trash, "/", 1) || !chunk_strcat(&trash, args[1])) {
|
||||
ha_alert("parsing [%s:%d]: '%s %s' : stick-table name too long.\n",
|
||||
file, linenum, args[0], args[1]);
|
||||
err_code |= ERR_ALERT | ERR_FATAL;
|
||||
|
@ -524,9 +524,9 @@ static int peer_prepare_switchmsg(char *msg, size_t size, struct peer_prep_param
|
||||
intencode(st->local_id, &cursor);
|
||||
|
||||
/* encode table name */
|
||||
len = strlen(st->table->id);
|
||||
len = strlen(st->table->nid);
|
||||
intencode(len, &cursor);
|
||||
memcpy(cursor, st->table->id, len);
|
||||
memcpy(cursor, st->table->nid, len);
|
||||
cursor += len;
|
||||
|
||||
/* encode table type */
|
||||
@ -1483,8 +1483,8 @@ static inline int peer_treat_definemsg(struct appctx *appctx, struct peer *p,
|
||||
if (st->remote_id == table_id)
|
||||
st->remote_id = 0;
|
||||
|
||||
if (!p->remote_table && (table_id_len == strlen(st->table->id)) &&
|
||||
(memcmp(st->table->id, *msg_cur, table_id_len) == 0))
|
||||
if (!p->remote_table && (table_id_len == strlen(st->table->nid)) &&
|
||||
(memcmp(st->table->nid, *msg_cur, table_id_len) == 0))
|
||||
p->remote_table = st;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user