diff --git a/ttcn/LibSip_Steps.ttcn b/ttcn/LibSip_Steps.ttcn index f45f67f4927d29d7c3df1b5eff3b495a546a1ff0..daa19d93b482cb187cee1ccd95f1f0f8786034ed 100644 --- a/ttcn/LibSip_Steps.ttcn +++ b/ttcn/LibSip_Steps.ttcn @@ -938,8 +938,10 @@ group FieldOperations { * @return boolean value (true indicate TH, false otherwise) */ function f_topologyHiding(inout Request p_request) runs on SipComponent return boolean - { - var GenericParam v_viaParameter := p_request.msgHeader.via.viaBody[1].viaParams[0]; // second element + { var GenericParam v_viaParameter; + if (sizeof(p_request.msgHeader.via.viaBody)<2) + {return(false)}; + v_viaParameter := p_request.msgHeader.via.viaBody[1].viaParams[0]; // second element if (not v_viaParameter.id == "tokenized-by") {return(false)}; return(true) @@ -955,9 +957,11 @@ group FieldOperations { function f_topologyHidingResponse(inout Response p_response) runs on SipComponent return boolean { var GenericParam v_viaParameter; - + log(p_response.msgHeader); for (var integer v_i := 0; v_i < sizeof(p_response.msgHeader.via.viaBody); v_i := v_i + 1) { + + v_viaParameter := p_response.msgHeader.via.viaBody[v_i].viaParams[0]; // first parameter if (not v_viaParameter.id == "tokenized-by") @@ -4357,8 +4361,14 @@ group DefaultsTestStep f_sendResponse(m_Response_Contact(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact)); //f_setHeadersGeneral(vc_cSeq, "NOTIFY"); // cseq, contact, branch, via //f_SendNOTIFY(m_NOTIFY_Request_contact(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact)); - log(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec); - f_SendNOTIFY(m_NOTIFY_Request_contact(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact)); + log(v_request.msgHeader.contact.contactBody); + if (ischosen(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr)) { + log(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec); + f_SendNOTIFY(m_NOTIFY_Request_contact(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact)); + } else { + log(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.addrSpecUnion); + f_SendNOTIFY(m_NOTIFY_Request_contact(v_request.msgHeader.contact.contactBody.contactAddresses[0].addressField.addrSpecUnion, vc_callId, vc_cSeq, vc_callee_From, vc_callee_To, vc_via, vc_contact)); + } f_awaitingOkResponse(vc_cSeq); repeat } diff --git a/ttcn/LibSip_Templates.ttcn b/ttcn/LibSip_Templates.ttcn index c6d6e1482afa89cb9d3090be3decd996b5720289..eb687e871b3ad837377130018bf02f93d1e7d09b 100644 --- a/ttcn/LibSip_Templates.ttcn +++ b/ttcn/LibSip_Templates.ttcn @@ -2364,6 +2364,15 @@ group response_send { messageBody := p_mb } + template Response m_Response_mbody_contact (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, + From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordroute, template MessageBody p_mb, template Contact p_contact) modifies m_Response_mbody:= + { + msgHeader := + { + contact := p_contact + } + } + template Response m_Response_PAsserted_Privacy (StatusLine p_statusLine, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, template Route p_route, template RecordRoute p_recordroute, template PAssertedID p_pAssertedID, template Privacy p_privacy) modifies m_Response_ext:= {