From 3bc0b2d0aea742640a1acf97fc4b41726b88ce96 Mon Sep 17 00:00:00 2001 From: Ralf Lici Date: Tue, 2 Sep 2025 18:00:44 +0200 Subject: [PATCH] management: resync timer on bytecount interval change coarse_timer_wakeup tracks when the next timer-driven task will occur. If a user issues `bytecount n` via the management interface, but the next scheduled wakeup is more than n seconds away, bandwidth logging will be delayed until that timer fires. To ensure timely logging, reset the timer whenever a new `bytecount` command is received. This guarantees that logging begins exactly n seconds after the command, matching the user-defined interval. Change-Id: Ic0035d52e0ea123398318870d2f4d21af927a602 Signed-off-by: Ralf Lici Acked-by: Gert Doering Message-Id: <20250902160050.18640-1-gert@greenie.muc.de> URL: https://sourceforge.net/p/openvpn/mailman/message/59228306/ Signed-off-by: Gert Doering --- src/openvpn/manage.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/openvpn/manage.c b/src/openvpn/manage.c index 52b0e5e25..422aa0bc9 100644 --- a/src/openvpn/manage.c +++ b/src/openvpn/manage.c @@ -514,6 +514,28 @@ man_bytecount(struct management *man, const int update_seconds) man->connection.bytecount_update_seconds = 0; event_timeout_clear(&man->connection.bytecount_update_interval); } + + /* The newly received bytecount interval may be sooner than the existing + * coarse timer wakeup. Reset the timer to ensure it fires at the correct, + * earlier time. + */ + if (man->persist.callback.arg) + { + struct context *c; + + if (man->settings.flags & MF_SERVER) + { + struct multi_context *m = man->persist.callback.arg; + c = &m->top; + } + else + { + c = man->persist.callback.arg; + } + + reset_coarse_timers(c); + } + msg(M_CLIENT, "SUCCESS: bytecount interval changed"); } -- 2.47.3