map_masq: Only one matching function for MO-ForwardSM-Arg
We have both the smsCDA and the imsi_list translation in the
MO-ForwardSM-Arg, and have to put both in one matching function, as in
the case of multiple matching functions only one of them will be
executed.
diff --git a/src/map_masq.erl b/src/map_masq.erl
index 2112535..ada31b3 100644
--- a/src/map_masq.erl
+++ b/src/map_masq.erl
@@ -143,10 +143,6 @@
NetNodeNrOut = patch_map_isdn_addr(From, NetNodeNr, msc),
P#'LocationInfoWithLMSI'{'networkNode-Number' = NetNodeNrOut};
-% MO-ForwardSM-Arg with optional IMSI
-patch(From, #'MO-ForwardSM-Arg'{imsi = ImsiIn} = P) ->
- P#'MO-ForwardSM-Arg'{imsi = patch_imsi(mo_fw_sm_arg, From, ImsiIn)};
-
% patch the roaming number as it is sent from HLR to G-MSC (SRI Resp)
patch(_From, {roamingNumber, RoamNumTBCD}) ->
RoamNumIn = map_codec:parse_addr_string(RoamNumTBCD),
@@ -292,9 +288,11 @@
patch(From, #'LocationInformation'{'vlr-number'=VlrNumber} = P) ->
VlrNumberOut = patch_map_isdn_addr(From, VlrNumber, vlr),
P#'LocationInformation'{'vlr-number'=VlrNumberOut};
-patch(From, #'MO-ForwardSM-Arg'{'sm-RP-DA'=SC} = P) ->
+patch(From, #'MO-ForwardSM-Arg'{'sm-RP-DA'=SC, imsi=ImsiIn} = P) ->
NewSC = patch_scaddr(From, SC),
- P#'MO-ForwardSM-Arg'{'sm-RP-DA'=NewSC};
+ P#'MO-ForwardSM-Arg'{'sm-RP-DA'=NewSC,
+ imsi = patch_imsi(mo_fw_sm_arg, From, ImsiIn)};
+
patch(_From, Default) ->
Default.