From 0622a9f7b608fe19376be5f1fb6378df2535cabc Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 11 May 2019 10:58:15 +0200 Subject: 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 --- library/GSUP_Types.ttcn | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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( -- cgit v1.2.3