From: Ralf Lici Date: Tue, 2 Sep 2025 16:00:44 +0000 (+0200) Subject: management: resync timer on bytecount interval change X-Git-Tag: v2.7_beta1~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3bc0b2d0aea742640a1acf97fc4b41726b88ce96;p=thirdparty%2Fopenvpn.git 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 --- 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"); }