From 880bbeeda4b70deee430743dd16d3171e7d319b5 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 11 Jan 2026 15:13:42 +0100 Subject: [PATCH] MINOR: sample: also support retrieving fc.timer.handshake without a stream Some timers, like the handshake timer, are stored in the session and are only copied to the logs struct when a stream is created. But this means we can't measure it without a stream, nor store it once for all in a variable at session creation time. Let's extend the sample fetch function to retrieve it from the session when no stream is present. The doc did not mention this limitation so this could almost be considered as a bug. --- src/sample.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/sample.c b/src/sample.c index 0473dc86c..31fe56fd8 100644 --- a/src/sample.c +++ b/src/sample.c @@ -5381,12 +5381,20 @@ static int smp_fetch_conn_timers(const struct arg *args, struct sample *smp, con { struct strm_logs *logs; - if (!smp->strm) - return 0; - smp->data.type = SMP_T_SINT; smp->flags = 0; + if (!smp->strm) { + /* no stream: only fc.timer.handshake is available via + * the session. + */ + if (kw[0] == 'f' && kw[9] == 'h') { + smp->data.u.sint = smp->sess->t_handshake; + return 1; + } + return 0; + } + logs = &smp->strm->logs; if (kw[0] == 'b') {