来自Android SIP演示的取消请求被星号1.8忽略

来自Android SIP演示的取消请求被星号1.8忽略,android,sip,asterisk,Android,Sip,Asterisk,当我将标准的Android SIP Demo与星号1.8.9.2服务器结合使用时,我面临一个奇怪的问题:传入/传出呼叫工作正常,但有一件事不工作:当我从SIP Demo启动呼叫并再次关闭呼叫时(点击“结束当前呼叫”按钮),呼叫在SIP演示中终止,但被叫设备仍保持响铃 我试图通过Wireshark记录电报来检查发生了什么,但似乎不接受从SIP演示发送到asterisk服务器的取消电报,请看: 300 08:30:39.483913 130.10.0.102 192.168.0.110 S

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

我试图通过Wireshark记录电报来检查发生了什么,但似乎不接受从SIP演示发送到asterisk服务器的取消电报,请看:

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秒钟,取消被接受,通话被正确终止:

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
我已经检查了两个取消请求的内容,结构完全相同! 此外,我还测试了一个带有星号1.6的服务器,在那里我没有遇到这个问题,呼叫在那里正确终止! 所以它让我相信它和星号vers有关。1.8

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


Armin

SIP演示只是一个演示:)它可能无法正确处理所有情况。它与“真正的”SIP客户端一起工作吗?使用您喜爱的softphone应用程序进行验证。对于Android,您可以尝试SIPDroid。如果是这样,那么SIP演示中缺少了一些内容,如果没有,则可能是您的星号配置有问题

不幸的是,SIPDroid使用了另一个SIP堆栈,而姜饼本机已经安装。这就是为什么在这里不观察忽略取消方法的原因。我当时正在玩android SIP堆栈,以便与AVSystem TR-069 ACS服务器进行示例集成,并且有相同的观察结果。我还不知道是否有解决办法。此处跟踪进度:

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

[general]
.
.
pedantic=no 

我希望它也能对您起作用……

您好,谢谢您的回复。我已经用SIPDroid进行了测试,事实上它没有显示问题。我知道SIP演示只是一个演示,但它使用的是标准的Android SIP堆栈,我目前也将其用于我的个人应用程序。我在这两个应用程序中都有问题,所以我想这是安卓SIP堆栈的问题。。。这可能吗?这是可能的。比较从SIPDroid和SIP演示捕获的数据包,可能会给您一些关于问题所在的提示。星号很可能已经有了一些参数/开关来处理这个问题,但您必须首先确定问题。检查所有标题等是否存在差异。我已经按照您所说的做了,但真诚地说,我看不出在处理取消的方式上有任何差异。。。SIPDroid发送相同的数据包。。。所包含消息的顺序略有不同,但我不认为这会造成问题。正如我在主要帖子中所说的,工作取消和非工作取消的结构/内容也没有区别……你还有什么其他提示吗?嗨,亚历克斯,谢谢你的回复,不幸的是,我仍然在与这个问题作斗争。我知道SipDroid有自己的SIP堆栈,但由于许可证原因,我不能将其用于我的项目。。。目前,我只是处理它在一个糟糕的方式,阻止挂断按钮约7秒;在这段时间后,取消总是可以接受的。嗨,谢谢你的反馈,我将在下周尝试并让你知道!Looong时间没有反馈,非常抱歉,但我正忙于其他事情!我现在已经完成了测试,它对我来说也非常有效!非常感谢您提供此信息!