From 3bb46177aca45f1b14f11c49683ab297d7f6f660 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 25 Mar 2016 18:17:47 +0100 Subject: [PATCH] BUG/MEDIUM: peers: fix incorrect age in frequency counters The frequency counters's window start is sent as "now - freq.date", which is a positive age compared to the current date. But on receipt, this age was added to the current date instead of subtracted. So since the date was always in the future, they were always expired if the activity changed side in less than the counter's measuring period (eg: 10s). This bug was reported by Christian Ruppert who also provided an easy reproducer. It needs to be backported to 1.6. --- src/peers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/peers.c b/src/peers.c index 295a0a5a42..d3fef4ae3f 100644 --- a/src/peers.c +++ b/src/peers.c @@ -1152,7 +1152,7 @@ switchstate: case STD_T_FRQP: { struct freq_ctr_period data; - data.curr_tick = tick_add(now_ms, intdecode(&msg_cur, msg_end)); + data.curr_tick = tick_add(now_ms, -intdecode(&msg_cur, msg_end)); if (!msg_cur) { /* malformed message */ appctx->st0 = PEER_SESS_ST_ERRPROTO; -- 2.47.3