diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2018-04-13 16:47:26 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-04-14 19:01:57 +0000 |
commit | 3ddb12d52e7f12dee1823d20ec4a2e99172d1db2 (patch) | |
tree | a292c424afdd983864b85ab37f923d010a1dfebf | |
parent | cda994edb20d24032d6ab4e916d0e9411671cfc0 (diff) |
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
-rw-r--r-- | src/libbsc/bsc_subscr_conn_fsm.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libbsc/bsc_subscr_conn_fsm.c b/src/libbsc/bsc_subscr_conn_fsm.c index a24cb315e..a63483e4e 100644 --- a/src/libbsc/bsc_subscr_conn_fsm.c +++ b/src/libbsc/bsc_subscr_conn_fsm.c @@ -1058,8 +1058,15 @@ static int gscon_timer_cb(struct osmo_fsm_inst *fi) 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 */ |