diff --git a/ttcn/LibIms_Steps.ttcn b/ttcn/LibIms_Steps.ttcn index 89e2661955443c4b8ddff447dc97769c0a0229b6..39b938c643a66274e3d0f7e07871bbcd24753864 100644 --- a/ttcn/LibIms_Steps.ttcn +++ b/ttcn/LibIms_Steps.ttcn @@ -1564,12 +1564,17 @@ module LibIms_Steps * @param p_reqHostPort parameter for outgoing BYE */ function f_terminateCall_UE(SipUrl p_requestUri, CallId p_CallId, inout CSeq p_cSeq, From p_from, - template To p_to) runs on ImsComponent + template To p_to, template RecordRoute p_recordRoute := omit) runs on ImsComponent { LibSip_Steps.f_setHeadersBYE(p_cSeq); // Sending of a BYE request to release the call and expect a final response - f_SendBYE(m_BYE_Request_UE(p_requestUri, p_CallId, p_cSeq, p_from, valueof(p_to), vc_via, vc_route)); - + if(ispresent(p_recordRoute)) { + var Route v_route := { ROUTE_E, valueof(p_recordRoute.routeBody)}; + f_SendBYE(m_BYE_Request_UE(p_requestUri, p_CallId, p_cSeq, p_from, valueof(p_to), vc_via, v_route)); + } else { + f_SendBYE(m_BYE_Request_UE(p_requestUri, p_CallId, p_cSeq, p_from, valueof(p_to), vc_via, vc_route)); + } + tc_resp.start(PX_SIP_TRESP); alt { diff --git a/ttcn/LibIms_Templates.ttcn b/ttcn/LibIms_Templates.ttcn index 85cdfaaef3aa1aed6af5c550befa344a67ef94d8..f8a03092e2563f9689167708d81c979caf623fd4 100644 --- a/ttcn/LibIms_Templates.ttcn +++ b/ttcn/LibIms_Templates.ttcn @@ -1362,6 +1362,20 @@ group request_send { }, messageBody := p_mb } + + template ACK_Request m_ACK_Request_Mime_IMS (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, + From p_from, To p_to, Via p_via,template MessageBody p_mb, template Route p_route) + modifies m_ACK_Request_Base + := + { + msgHeader := + { + contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, + contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart}, + route := p_route + }, + messageBody := p_mb + } template BYE_Request m_BYE_Request_IMS ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to,