summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2020-01-20 18:06:08 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2020-01-21 10:53:34 +0100
commit14fea235274dc64db93c17b592c9de5418d7eb9b (patch)
treef3b7ad47c19d4d000c79b16ef0dda5318f3067c9
parent82c7a3c36c7a3ed282b6684ad71d76ee8e0125dd (diff)
sccp: Disarm inactivity timer upon T(iar) active->disconn_pend
All other code paths moving to state DISCONN_PEND seem to stop them, and anyway that state doesn't permit event SCOC_E_T_IAS_EXP: DLSCCP DEBUG SCCP-SCOC(0){ACTIVE}: Received Event T(iar)_expired (sccp_scoc.c:346) ... DLSCCP DEBUG SCCP-SCOC(0){ACTIVE}: state_chg to DISCONN_PEND (sccp_scoc.c:1095) ... DLSCCP DEBUG SCCP-SCOC(0){DISCONN_PEND}: Received Event T(ias)_expired (sccp_scoc.c:339) DLSCCP ERROR SCCP-SCOC(0){DISCONN_PEND}: Event T(ias)_expired not permitted (sccp_scoc.c:339) Change-Id: Ieb02dedba312ab76890e943934ce6a1e2fe61f74
-rw-r--r--src/sccp_scoc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/sccp_scoc.c b/src/sccp_scoc.c
index d2fb8d1..015850e 100644
--- a/src/sccp_scoc.c
+++ b/src/sccp_scoc.c
@@ -1081,6 +1081,8 @@ static void scoc_fsm_active(struct osmo_fsm_inst *fi, uint32_t event, void *data
osmo_fsm_inst_state_chg(fi, S_IDLE, 0, 0);
break;
case SCOC_E_T_IAR_EXP:
+ /* stop inact timers */
+ conn_stop_inact_timers(conn);
xua = xua_msg_alloc();
xua_msg_add_u32(xua, SUA_IEI_CAUSE,
SUA_CAUSE_T_RELEASE | SCCP_RELEASE_CAUSE_EXPIRATION_INACTIVE);
@@ -1091,6 +1093,7 @@ static void scoc_fsm_active(struct osmo_fsm_inst *fi, uint32_t event, void *data
talloc_free(xua);
/* Send RLSD to peer */
xua_gen_relre_and_send(conn, SCCP_RELEASE_CAUSE_EXPIRATION_INACTIVE, NULL);
+ /* start release timer */
conn_start_rel_timer(conn);
osmo_fsm_inst_state_chg(fi, S_DISCONN_PEND, 0, 0);
break;