BUG/MINOR: cli: Atomically inc the global request counter between CLI commands
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 16 Jul 2024 12:42:20 +0000 (14:42 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 29 Jul 2024 09:56:13 +0000 (11:56 +0200)
The global request counter is used to set the stream id (s->uniq_id). It is
incremented at different places. And it must be atomically incremented
because it is a global value. However, in the analyer dealing with CLI
command response, this was not the case. It is now fixed.

This patch must be backported to all stable versions.

(cherry picked from commit 3cdb3fa5d95afc33465f894640217ff87b0c0562)
Signed-off-by: Willy Tarreau <w@1wt.eu>

src/cli.c

index 9470d12..f8e872e 100644 (file)
--- a/src/cli.c
+++ b/src/cli.c
@@ -3219,7 +3219,7 @@ int pcli_wait_for_response(struct stream *s, struct channel *rep, int an_bit)
                s->target = NULL;
                /* re-init store persistence */
                s->store_count = 0;
-               s->uniq_id = global.req_count++;
+               s->uniq_id = _HA_ATOMIC_FETCH_ADD(&global.req_count, 1);
 
                s->scf->flags &= ~(SC_FL_EOS|SC_FL_ERROR|SC_FL_ABRT_DONE|SC_FL_ABRT_WANTED);
                s->scf->flags &= ~SC_FL_SND_NEVERWAIT;