diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2023-03-24 03:10:06 +0100 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2023-03-24 03:26:42 +0100 |
commit | 2e476c692b02afb5d96311240c14ec35b4c6ea90 (patch) | |
tree | d668ecd69515888cc8be4c802f672cae43754ddd | |
parent | 2790599e56d926eb6d59b14ddea61f5c99d2d505 (diff) |
fix sccp_scoc state S_WAIT_CONN_CONF out_state_mask
In sccp_scoc_states, allow the state transitions present in
S_WAIT_CONN_CONF's event handler function scoc_fsm_wait_conn_conf(), and
thus fix handling of N-DISCONNECT while waiting for SCCP Conn Confirm.
Fixes this error:
DLSCCP ERROR SCCP-SCOC(1016){WAIT_CONN_CONF}: transition to state IDLE not permitted! (sccp_scoc.c:1213)
S_WAIT_CONN_CONF happens when the caller sends an N-DISCONNECT during
S_CONN_PEND_OUT -- that means, while we are waiting for a CC from the
peer, the caller ends the conn. SCCP-SCOC still waits for the CC first.
When S_WAIT_CONN_CONF expires, the intended path is state change to
S_IDLE, which then deallocates the connection. Allow this state
transition from S_WAIT_CONN_CONF to S_IDLE.
When S_WAIT_CONN_CONF receives a CC, the intended path is to send a
RELRE and state change to S_DISCONN_PEND. Allow this state transition
from S_WAIT_CONN_CONF to S_DISCONN_PEND.
Change-Id: I8145e53124cabd76bd2cee159ab01306a1afaa27
-rw-r--r-- | src/sccp_scoc.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/sccp_scoc.c b/src/sccp_scoc.c index db1db23..c929ed6 100644 --- a/src/sccp_scoc.c +++ b/src/sccp_scoc.c @@ -1468,6 +1468,8 @@ static const struct osmo_fsm_state sccp_scoc_states[] = { S(SCOC_E_CONN_TMR_EXP) | S(SCOC_E_RCOC_CREF_IND) | S(SCOC_E_RCOC_ROUT_FAIL_IND), + .out_state_mask = S(S_IDLE) | + S(S_DISCONN_PEND), }, }; |