From 9e83c3d5ca64428befe74e5aad61bd84bccaf309 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 16 Apr 2017 17:24:46 +0200 Subject: fsm: Re-set fsm_inst->T to 0 after timer expiration If the user starts the FSM timer with a given timer number during fsm_inst_state_chg() with a timeout, we should remove that "T" number after timer expiration. Otherwise it might be confusing if e.g. the VTY interface shows FSM instances with a certain timer number assigned, but that timer is not actually running anymore. Change-Id: I71167ec1000dc4c6954d851d3b92f6bf12984925 --- src/fsm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/fsm.c b/src/fsm.c index 7b2be701..9e6ef156 100644 --- a/src/fsm.c +++ b/src/fsm.c @@ -178,13 +178,16 @@ static void fsm_tmr_cb(void *data) if (fsm->timer_cb) { int rc = fsm->timer_cb(fi); - if (rc != 1) + if (rc != 1) { + fi->T = 0; return; + } LOGPFSM(fi, "timer_cb requested termination\n"); } else LOGPFSM(fi, "No timer_cb, automatic termination\n"); /* if timer_cb returns 1 or there is no timer_cb */ + fi->T = 0; osmo_fsm_inst_term(fi, OSMO_FSM_TERM_TIMEOUT, &T); } -- cgit v1.2.3