首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SIPp:在200之前取消场景487

SIPp:在200之前取消场景487
EN

Stack Overflow用户
提问于 2015-10-13 20:49:02
回答 1查看 3.2K关注 0票数 0

我正在尝试模拟在取消场景中,当487在200之前时如何处理。但我得到“中止呼叫上的意外消息呼叫Id同时发送(索引5),收到'ACK sip:service@192.168.1.20:5060 SIP/2.0”错误。这是我的服务器。

代码语言:javascript
复制
<scenario name="Basic UAS responder">

<recv request="INVITE" crlf="true">
</recv>
<send>
<![CDATA[

    SIP/2.0 100 Trying
    [last_Via:]
    [last_From:]
    [last_To:]
    [last_Call-ID:]
    [last_CSeq:]
    Contact: <sip:[local_ip]:[local_port];transport=[transport]>
    Content-Length: [len]

]]>
</send>
<send>
<![CDATA[

    SIP/2.0 180 Ringing
    [last_Via:]
    [last_From:]
    [last_To:];tag=[call_number]
    [last_Call-ID:]
    [last_CSeq:]
    Contact: <sip:[local_ip]:[local_port];transport=[transport]>
    Content-Length: [len]

]]>
</send>

<recv request="CANCEL">
</recv>
<send>
<![CDATA[

    SIP/2.0 487 Request Terminated
    [last_Via:]
    [last_From:]
    [last_To:]
    [last_Call-ID:]
    CSeq: [cseq] INVITE
    Contact: <sip:[local_ip]:[local_port];transport=[transport]>
    Content-Length: [len]

]]>
</send>

<send>
<![CDATA[

    SIP/2.0 200 OK
    [last_Via:]
    [last_From:]
    [last_To:]
    [last_Call-ID:]
    [last_CSeq:]
    Contact: <sip:[local_ip]:[local_port];transport=[transport]>
    Content-Length: [len]

]]>
</send>





<!--pause milliseconds="4000"/-->
<recv request="ACK"
crlf="true">
</recv>


</scenario>

这是我的客户

代码语言:javascript
复制
<scenario name="UAC Cancel">

<send retrans="500">

<![CDATA[

    INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
    Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
    To: <sip:[service]@[remote_ip]:[remote_port]>
    From: <sip:sipp@[local_ip]:[local_port]; tag=[call_number]
    Call-ID: [call_id]
    CSeq: [cseq] INVITE
    Contact: sip:sipp@[local_ip]:[local_port]
    Max-Forwards: 70
    Content-Length: [len]

]]>
</send>

<recv response="100" optional="true">
</recv>

<recv response="180">
</recv>

<pause milliseconds="4000"/>

<send>
<![CDATA[

    CANCEL sip:[service]@[remote_ip]:[remote_port] SIP/2.0
    [last_Via:]
    To: sip:[service]@[local_ip]:[local_port]>[peer_tag_param]
    From: sip:sipp@[local_ip]:[local_port];tag=[call_number]
    Call-ID: [call_id]
    [last_CSeq:]
    Contact: sip:sipp@[local_ip]:[local_port]
    Max-Forwards: 70
    Content-length: [len]

]]>
</send>

<recv response="200" optional="true">
</recv>

<recv response="487" next="cancelACK">
</recv>

<label id="cancelACK"/>
<send>
<![CDATA[
    ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0
    [last_Via:]
    To: <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
    From: <sip:sipp@[local_ip]:[local_port];tag=[call_number]
    Call-ID: [call_id]
    CSeq: [cseq] ACK
    Contact: sip:sipp@[local_ip]:[local_port]
    Max-Forwards: 70
    Content-Length: [len]
]]>
</send>
<pause milliseconds="3000"/>

</scenario>
EN

回答 1

Stack Overflow用户

发布于 2015-10-14 19:48:57

在我看来,您使用last_Via:的方式会有问题。

来自UAC的CANCEL请求应该在其Via头中有一个新的分支参数,因为它是一个新的事务。

此外,对UAS生成的INVITE请求的OK响应将使用来自CANCEL请求的Via报头。

由于Via标头对于SIP事务匹配至关重要,因此sipp在不能正确匹配事物时发出抱怨是可以理解的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33103169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档