【问题标题】:CANCEL request from Android SIP demo ignored by Asterisk 1.8Asterisk 1.8 忽略了来自 Android SIP 演示的 CANCEL 请求
【发布时间】:2013-06-18 06:34:46
【问题描述】:

在使用标准 Android SIP Demo 与 asterisk 1.8.9.2 服务器结合使用时,我遇到了一个奇怪的问题:传入/传出呼叫正常工作,但有一点不工作:当我从 SIP 发起呼叫时demo 和我再次关闭通话(点击“结束当前通话”按钮),通话在 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

现在真正奇怪的事情是:如果我重复相同的操作,并且在通过“结束当前通话”按钮终止通话之前,我会等待 ca. 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 的服务器,我没有遇到这个问题,呼叫在那里正确终止! 所以它让我相信它必须用星号 vers 做一些事情。 1.8.

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

阿明

【问题讨论】:

    标签: android sip asterisk


    【解决方案1】:

    我在使用 Asterisk 1.8.11.0 和 Android 2.3/4.0.3 时遇到了完全相同的问题。 在 sip.conf 文件的 'general' 部分下有一个简单的解决方案 添加以下值为 no 的属性。

    [general]
    .
    .
    pedantic=no 
    

    我希望它也对你有用.....

    【讨论】:

    • 您好,感谢您的反馈,我会在下周尝试并通知您!
    • 很长一段时间没有反馈,非常抱歉,但我正忙于其他事情!我现在已经完成了测试,它对我也很有效!非常感谢您提供此信息!
    【解决方案2】:

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

    【讨论】:

    • 您好,感谢您的回复。我已经用 SIPDroid 进行了测试,实际上它没有显示问题。我知道 SIP 演示只是一个演示,但它使用了标准的 Android SIP 堆栈,我目前也将其用于我的个人应用程序。而且我在两个应用程序中都有问题,所以我猜这是 Android SIP 堆栈的问题......可能是这样吗?
    • 有可能。比较来自 SIPDroid 和 SIP Demo 的数据包捕获,可能会给您一些关于问题所在的提示。 Asterisk 很可能已经有一些参数/开关可以处理这个问题,但你必须首先确定问题。检查所有标题等是否存在差异。
    • 我已经按照你说的做了,但是说真的,我看不出处理 CANCEL 的方式有什么不同... SIPDroid 发送相同的数据包...包含的消息的顺序略有不同不同,但我不认为它会引起麻烦。正如我的主要帖子中已经说过的那样,工作和非工作 CANCEL 的结构/内容也没有区别......您还有其他提示吗?
    【解决方案3】:

    不幸的是,SIPDroid 使用了另一个 SIP 堆栈,然后 Gingerbread 已本地安装。这就是为什么您没有观察到忽略 CANCEL 方法的原因。我正在使用 android SIP 堆栈与 AVSystem TR-069 ACS 服务器进行示例集成,并且有相同的观察结果。还不知道是否有任何解决方法。在此处跟踪进度:http://avsystem.com

    【讨论】:

    • 嗨,Alex,感谢您的回复,不幸的是,我仍在与这个问题作斗争。我知道 SipDroid 有他自己的 SIP 堆栈,但由于许可证原因,我不能将它用于我的项目......目前我只是以一种糟糕的方式处理它,阻止了 ca 的挂断按钮。 7秒;在这段时间之后,CANCEL 总是被接受。
    猜你喜欢
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    相关资源
    最近更新 更多