diff options
author | Harald Welte <laforge@gnumonks.org> | 2019-05-11 10:58:15 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2019-05-11 11:09:09 +0200 |
commit | 0622a9f7b608fe19376be5f1fb6378df2535cabc (patch) | |
tree | d5d4557c1c6d9e0d703200114b5beb50f51764f7 | |
parent | 1e5a02d7667eba174db96cb56273d767083e87cd (diff) |
Make f_gen_tr_ss_ies() work for both 'latest' and 'master'
This fixes the partial revert of c43c8cd275b4f71b0bc6a50fc81564c812d5b406
to work for both situtions: Messages that have the OSMO_GSUP_MESSAGE_CLASS_USSD
and messages that don't.
The particular implementation is rather ugly, but we're waiting for
a response to https://www.eclipse.org/forums/index.php/t/1098847/
on how to solve this kind of problem in a more elegant way. Meanwile,
we make it work first.
Change-Id: Ibf137de6a41aaa43894cc0b6da8341ceb88b0756
-rw-r--r-- | library/GSUP_Types.ttcn | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/library/GSUP_Types.ttcn b/library/GSUP_Types.ttcn index 7e26e19f..44b9f268 100644 --- a/library/GSUP_Types.ttcn +++ b/library/GSUP_Types.ttcn @@ -1091,15 +1091,23 @@ private function f_gen_tr_ss_ies( tr_GSUP_IE_SessionId(sid), tr_GSUP_IE_SessionState(state) }; + var integer last_idx := 3; /* Optional SS payload */ if (istemplatekind(ss, "*")) { ies[3] := *; + last_idx := last_idx + 1; } else if (not istemplatekind(ss, "omit")) { ies[3] := tr_GSUP_IE_SSInfo(ss); + last_idx := last_idx + 1; } - return ies; + /* the GSUP Message Class IE is optional, as old implementations don't have it yet */ + var template GSUP_IEs ies2 := ies; + ies2[last_idx] := tr_GSUP_IE_Message_Class(OSMO_GSUP_MESSAGE_CLASS_USSD); + last_idx := last_idx + 1; + + return (ies, ies2); } template (value) GSUP_PDU ts_GSUP_PROC_SS_REQ( |