pespin has uploaded this change for review.
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 change 35895. To unsubscribe, or for help writing mail filters, visit settings.