From ad099335c1c2de17fb0b3b29b008ef8623ee93c0 Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Tue, 20 Feb 2018 08:34:48 -0500 Subject: [PATCH] Reset expired timer vector length after callback Otherwise, in a "catch-up / multiple tick" case, the code will repeatedly hand previously-processed expired timer handles to the user callback. Change-Id: Idef4f242279ea41cb557bb6cff5984de02a6503d Signed-off-by: Dave Barach --- src/vppinfra/tw_timer_template.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vppinfra/tw_timer_template.c b/src/vppinfra/tw_timer_template.c index abad3718b6f..a6d26d7991d 100644 --- a/src/vppinfra/tw_timer_template.c +++ b/src/vppinfra/tw_timer_template.c @@ -738,7 +738,10 @@ static inline { /* The callback is optional. We return the u32 * handle vector */ if (tw->expired_timer_callback) - tw->expired_timer_callback (callback_vector); + { + tw->expired_timer_callback (callback_vector); + vec_reset_length (callback_vector); + } tw->expired_timer_handles = callback_vector; } -- 2.16.6