来自Asterisk 1.8忽略的Android SIP演示的CANCEL请求

时间:2012-05-22 07:02:39

标签: android sip asterisk

当使用标准的Android SIP Demo与星号1.8.9.2服务器结合使用时,我遇到一个奇怪的问题:传入/传出呼叫正常工作,但有一件事不起作用:当我从SIP发起呼叫时演示和我再次关闭呼叫(点击“结束当前呼叫”按钮),呼叫在SIP演示中终止,但被叫设备仍然响铃。

我试图通过Wireshark记录电报来检查发生了什么,似乎不接受从SIP演示到星号服务器的CANCEL电报,看看:

300 08:30:39.483913 130.10.0.102    192.168.0.110   SIP/SDP 916 Request: INVITE sip:110@192.168.0.110:5060, with session description
301 08:30:39.488686 192.168.0.110   130.10.0.102    SIP 525 Status: 100 Trying
302 08:30:39.524884 192.168.0.110   130.10.0.102    SIP 541 Status: 180 Ringing
309 08:30:41.041071 130.10.0.102    192.168.0.110   SIP 370 Request: CANCEL sip:110@192.168.0.110:5060
310 08:30:41.051545 192.168.0.110   130.10.0.102    SIP 526 Status: 481 Call/Transaction Does Not Exist

现在真正奇怪的是:如果我重复相同的动作,并在通过“结束当前通话”按钮终止通话之前,我等待大约。 7秒后,接受CANCEL并正确终止呼叫:

646 08:31:05.571464 130.10.0.102    192.168.0.110   SIP/SDP 916 Request: INVITE sip:110@192.168.0.110:5060, with session description
647 08:31:05.576150 192.168.0.110   130.10.0.102    SIP 525 Status: 100 Trying
648 08:31:05.662345 192.168.0.110   130.10.0.102    SIP 541 Status: 180 Ringing
664 08:31:08.302561 130.10.0.102    192.168.0.110   SIP 389 Request: OPTIONS sip:192.168.0.110
665 08:31:08.312097 192.168.0.110   130.10.0.102    SIP 528 Status: 404 Not Found
698 08:31:13.370346 130.10.0.102    192.168.0.110   SIP 370 Request: CANCEL sip:110@192.168.0.110:5060
699 08:31:13.373570 192.168.0.110   130.10.0.102    SIP 513 Status: 487 Request Terminated
700 08:31:13.373912 192.168.0.110   130.10.0.102    SIP 497 Status: 200 OK

我检查了两个CANCEL请求的内容,结构完全一样! 此外,我还测试了一个星号1.6的服务器,我没有遇到这个问题,呼叫在那里正确终止! 所以它让我相信它必须与asterisk vers做点什么。 1.8。

有没有人遇到过类似的问题并且对我有一些有用的提示?如果需要进一步的数据进行分析,请告诉我! 谢谢你的帮助, BR

阿明

3 个答案:

答案 0 :(得分:4)

我遇到了与Asterisk 1.8.11.0和Android 2.3 / 4.0.3完全相同的问题。 在sip.conf文件的“常规”部分下有一个简单的解决方案 添加以下属性,其值等于no。

[general]
.
.
pedantic=no 

我希望它也适合你......

答案 1 :(得分:0)

SIP演示只是一个演示:)它可能无法正确处理所有情况。它是否适用于“真正的”SIP客户端?使用您最喜爱的软电话应用验证。对于Android,您可以尝试SIPDroid。如果是这样,SIP演示中缺少某些内容,如果没有,可能是您的Asterisk配置有问题。

答案 2 :(得分:0)

不幸的是,SIPDroid使用另一个SIP堆栈,然后Gingerbread已经原生安装。这就是为什么你不遵守忽略CANCEL方法的原因。我正在玩Android SIP堆栈,用于与AVSystem TR-069 ACS服务器进行样本集成,并且具有相同的观察结果。不知道是否有任何修复。在此跟踪进度:http://avsystem.com