inform A-RESET FSM about MSC CR timeouts
The SUBSCR_CONN (GSCON) fsm starts a timer (993210, 20sec.) when the
CR to the MSC is made. When the timer reaches its timeout, then the
SUBSC_CONN FSM terminates. Such a timeout event is also an indicator
for a bad SCCP connection so we should call a_reset_conn_fail() to
inform the A-RESET FSM about the event in order to cause a BSSMAP
reset when too many timeouts occurr consecutively
- Call a_reset_conn_fail() when 993210 expires
Change-Id: I836a552f2ad37c160081246579f842d104d0dd35
Related: OS#3102
diff --git a/src/libbsc/bsc_subscr_conn_fsm.c b/src/libbsc/bsc_subscr_conn_fsm.c
index a24cb31..a63483e 100644
--- a/src/libbsc/bsc_subscr_conn_fsm.c
+++ b/src/libbsc/bsc_subscr_conn_fsm.c
@@ -1058,8 +1058,15 @@
switch (fi->T) {
case 993210:
- /* MSC has not responded/confirmed connection witH CC */
- /* N-DISCONNET.req is sent in gscon_cleanup() above */
+ /* MSC has not responded/confirmed connection with CC, this
+ * could indicate a bad SCCP connection. We now inform the the
+ * FSM that controls the BSSMAP reset about the event. Maybe
+ * a BSSMAP reset is necessary. */
+ a_reset_conn_fail(conn->sccp.msc->a.reset);
+
+ /* Since we could not reach the MSC, we give up and terminate
+ * the FSM instance now (N-DISCONNET.req is sent in
+ * gscon_cleanup() above) */
osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL);
break;
case GSM0808_T10_TIMER_NR: /* Assignment Failed */