pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/41302?usp=email )


Change subject: aaa_ue_fsm: Avoid immediate stop of fsm during 2nd SWx RTR
......................................................................

aaa_ue_fsm: Avoid immediate stop of fsm during 2nd SWx RTR

During Network Initiated De-Registration by HSS Procedure, if a 2nd RTR
arrives for an aaa_ue_fsm which is already in
state_dereg_net_initiated_*, let it continue with the ordered tear down
consisting of informing peer nodes.

Change-Id: I6d564ec1583692a6b6f3f273268b400570b246ff
---
M src/aaa_ue_fsm.erl
1 file changed, 34 insertions(+), 4 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-epdg 
refs/changes/02/41302/1

diff --git a/src/aaa_ue_fsm.erl b/src/aaa_ue_fsm.erl
index 64f6cb3..fa1c807 100644
--- a/src/aaa_ue_fsm.erl
+++ b/src/aaa_ue_fsm.erl
@@ -256,7 +256,12 @@
         case aaa_diameter_swx:server_assignment_request(Data#ue_fsm_data.imsi, 
1, Apn, []) of
         ok -> {next_state, state_wait_swx_saa, Data, [{reply,From,ok}]};
         {error, Err} -> {keep_state, Data, [{reply,From,{error, Err}}]}
-        end.
+        end;
+
+state_new({call, From}, rx_swx_rtr, Data) ->
+        lager:info("ue_fsm state_new event=rx_swx_rtr ~p~n", [Data]),
+        %% No need to inform anybody else, tear down FSM:
+        {stop_and_reply, normal, [{reply,From,ok}], Data}.

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% state_wait_swx_maa:
@@ -268,7 +273,12 @@
 state_wait_swx_maa({call, From}, {rx_swx_maa, Result}, Data) ->
         lager:info("ue_fsm state_wait_swx_maa event=rx_swx_maa, ~p~n", [Data]),
         aaa_diameter_swm:tx_dea_auth_response(Data#ue_fsm_data.imsi, Result),
-        {next_state, state_new, Data, [{reply,From,ok}]}.
+        {next_state, state_new, Data, [{reply,From,ok}]};
+
+state_wait_swx_maa({call, From}, rx_swx_rtr, Data) ->
+        lager:info("ue_fsm state_wait_swx_maa event=rx_swx_rtr ~p~n", [Data]),
+        %% No need to inform anybody else, tear down FSM:
+        {stop_and_reply, normal, [{reply,From,ok}], Data}.

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% state_wait_swx_saa:
@@ -286,7 +296,12 @@
         {ok, _SAType, ResInfo} ->
                 
aaa_diameter_swm:tx_dea_auth_compl_response(Data#ue_fsm_data.imsi, {ok, 
ResInfo}),
                 {next_state, state_authenticated, Data, [{reply,From,ok}]}
-        end.
+        end;
+
+state_wait_swx_saa({call, From}, rx_swx_rtr, Data) ->
+        lager:info("ue_fsm state_wait_swx_saa event=rx_swx_rtr ~p~n", [Data]),
+        %% No need to inform anybody else, tear down FSM:
+        {stop_and_reply, normal, [{reply,From,ok}], Data}.

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% state_authenticated:
@@ -431,7 +446,12 @@
                         Data1 = Data#ue_fsm_data{pgw_sess_active = false, 
s6b_resp_pid = undefined},
                         {next_state, state_new, Data1, [{reply,From,ok}]}
                 end
-        end.
+        end;
+
+state_authenticated_wait_swx_saa({call, From}, rx_swx_rtr, Data) ->
+    lager:info("ue_fsm state_authenticated_wait_swx_saa event=rx_swx_rtr 
~p~n", [Data]),
+    %% We are already tearing down in an ordered manner, accept and do nothing.
+    {keep_state, Data, [{reply,From,ok}]};

 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% state_dereg_net_initiated_wait_s6b_asa:
@@ -446,6 +466,11 @@
 state_dereg_net_initiated_wait_s6b_asa({call, From}, {rx_s6b_asa, _Result}, 
Data) ->
         {next_state, state_dereg_net_initiated_wait_swm_asa, Data, 
[{reply,From,ok}]};

+state_dereg_net_initiated_wait_s6b_asa({call, From}, rx_swx_rtr, Data) ->
+    lager:info("ue_fsm state_dereg_net_initiated_wait_s6b_asa event=rx_swx_rtr 
~p~n", [Data]),
+    %% We are already tearing down in an ordered manner, accept and do nothing.
+    {keep_state, Data, [{reply,From,ok}]};
+
 state_dereg_net_initiated_wait_s6b_asa({call, From}, Ev, Data) ->
         lager:notice("ue_fsm state_dereg_net_initiated_wait_s6b_asa: 
Unexpected call event ~p, ~p~n", [Ev, Data]),
         {keep_state, Data, [{reply,From,ok}]};
@@ -466,6 +491,11 @@
 state_dereg_net_initiated_wait_swm_asa({call, From}, rx_swm_asa, Data) ->
         {stop_and_reply, normal, [{reply,From,ok}], Data};

+state_dereg_net_initiated_wait_swm_asa({call, From}, rx_swx_rtr, Data) ->
+    lager:info("ue_fsm state_dereg_net_initiated_wait_swm_asa event=rx_swx_rtr 
~p~n", [Data]),
+    %% We are already tearing down in an ordered manner, accept and do nothing.
+    {keep_state, Data, [{reply,From,ok}]};
+
 state_dereg_net_initiated_wait_swm_asa({call, From}, Ev, Data) ->
         lager:notice("ue_fsm state_dereg_net_initiated_wait_swm_asa: 
Unexpected call event ~p, ~p~n", [Ev, Data]),
         {keep_state, Data, [{reply,From,ok}]};

--
To view, visit https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/41302?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-epdg
Gerrit-Branch: master
Gerrit-Change-Id: I6d564ec1583692a6b6f3f273268b400570b246ff
Gerrit-Change-Number: 41302
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>

Reply via email to