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


Change subject: epdg_diameter_swm: Update PID if session already exists
......................................................................

epdg_diameter_swm: Update PID if session already exists

If the FSM was recreated, during the first step it may have a different
PID. Update it so that we send the answer back to the proper PID.

Change-Id: I5e4f0ff4292c364f47d61ba629df50e8e3d35017
---
M src/epdg_diameter_swm.erl
1 file changed, 22 insertions(+), 2 deletions(-)



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

diff --git a/src/epdg_diameter_swm.erl b/src/epdg_diameter_swm.erl
index 57c0921..800df44 100644
--- a/src/epdg_diameter_swm.erl
+++ b/src/epdg_diameter_swm.erl
@@ -181,7 +181,15 @@
        Sess = find_swm_session_by_imsi(Imsi, State),
        case Sess of
                #swm_session{imsi = Imsi} ->
-               {Sess, State};
+               % Update Pid since it may have changed:
+               Sess1 = Sess#swm_session{pid = Pid},
+               State1 = update_swm_session(Sess, Sess1, State),
+               {Sess1, State1};
                undefined ->
                new_swm_session(Imsi, Pid, State)
-       end.
\ No newline at end of file
+       end.
+
+update_swm_session(OldSess, NewSess, State) ->
+       SetRemoved = sets:del_element(OldSess, State#swm_state.sessions),
+       SetUpdated = sets:add_element(NewSess, SetRemoved),
+       State#swm_state{sessions = SetUpdated}.

--
To view, visit https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/35895?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: erlang/osmo-epdg
Gerrit-Branch: master
Gerrit-Change-Id: I5e4f0ff4292c364f47d61ba629df50e8e3d35017
Gerrit-Change-Number: 35895
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>
Gerrit-MessageType: newchange

Reply via email to