fixeria has uploaded this change for review. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/39525?usp=email )
Change subject: erab_fsm: handle RELEASE.ind in state erab_wait_release_rsp
......................................................................
erab_fsm: handle RELEASE.ind in state erab_wait_release_rsp
This can happen if both MME and eNB initiate the E-RAB RELEASE
procedures simultaneously. Ignore subsequent release requests.
Change-Id: I68efecf56866e04c71571165f61648d9c37fc173
Related: SYS#7318, SYS#7310
---
M src/erab_fsm.erl
M test/erab_fsm_test.erl
2 files changed, 22 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/25/39525/1
diff --git a/src/erab_fsm.erl b/src/erab_fsm.erl
index c4dbbd6..dbd7ec1 100644
--- a/src/erab_fsm.erl
+++ b/src/erab_fsm.erl
@@ -385,6 +385,16 @@
?LOG_DEBUG("Rx E-RAB RELEASE Rsp, we're done"),
{stop, normal}; %% we're done!
+erab_wait_release_rsp(cast, erab_release_cmd,
+ #erab_state{}) ->
+ ?LOG_INFO("Rx E-RAB RELEASE Cmd while releasing (ignored)"),
+ keep_state_and_data;
+
+erab_wait_release_rsp(cast, erab_release_ind,
+ #erab_state{}) ->
+ ?LOG_INFO("Rx E-RAB RELEASE Ind while releasing (ignored)"),
+ keep_state_and_data;
+
erab_wait_release_rsp(Event, EventData, S) ->
handle_event(?FUNCTION_NAME, Event, EventData, S).
diff --git a/test/erab_fsm_test.erl b/test/erab_fsm_test.erl
index 232446e..ea508dd 100644
--- a/test/erab_fsm_test.erl
+++ b/test/erab_fsm_test.erl
@@ -57,6 +57,8 @@
?TC(fun test_erab_setup_release_ind_success/1)},
{"E-RAB RELEASE IND (in state erab_wait_setup_rsp) :: success",
?TC(fun test_erab_wait_setup_rsp_release_ind_success/1)},
+ {"E-RAB RELEASE IND (in state erab_wait_release_rsp) :: success",
+ ?TC(fun test_erab_wait_release_rsp_release_ind_success/1)},
{"E-RAB release :: PFCP session deletion error",
?TC(fun test_erab_release_pfcp_delete_error/1)}].
@@ -141,6 +143,16 @@
?_assertNot(erlang:is_process_alive(Pid))].
+%% test E-RAB RELEASE.ind received in state erab_wait_release_rsp
+test_erab_wait_release_rsp_release_ind_success(Pid) ->
+ [?_assertEqual({ok, ?A2U}, erab_fsm:erab_setup_req(Pid, ?U2C)),
+ ?_assertEqual({ok, ?C2U}, erab_fsm:erab_setup_rsp(Pid, ?U2A)),
+ ?_assertEqual(ok, erab_fsm:erab_release_cmd(Pid)),
+ ?_assertEqual(ok, erab_fsm:erab_release_ind(Pid)), %% ignored
+ ?_assertEqual(ok, erab_fsm:erab_release_rsp(Pid)),
+ ?_assertNot(erlang:is_process_alive(Pid))].
+
+
test_erab_release_pfcp_delete_error(Pid) ->
%% pfcp_peer:session_delete_req/1 responds with a reject
PDU = pfcp_mock:pdu_rsp_reject(session_deletion_response, ?SEID_Loc),
--
To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/39525?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: erlang/osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: I68efecf56866e04c71571165f61648d9c37fc173
Gerrit-Change-Number: 39525
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>