由于星号中的注册/取消注册冲突而导致请求超时



我已经安装了星号11.5.1,我在iPhone上将Bria作为sip客户端。 用户名/密码在 sip.conf 中设置,默认拨号计划(由客户端使用)为

exten => _X.,1,Dial(SIP/${EXTEN},20)
exten => _X.,n,Hangup()

有两部iPhone,比如A和B,我用asterisk -rvvvv附在正在运行的星号上。当我从A点击"注册"按钮时,我看到

Registered SIP 'A' at ww.xx.yy.zz:mmmm

星号 CLI 上的消息。当我从B点击"注册"按钮时,我看到

Registered SIP 'B' at aa.bb.cc.dd:nnnn
Unregistered SIP 'B'   <== HERE IS THE PROBLEM

虽然我没有从客户端 B 点击注销。此外,B似乎在客户端注册。从现在开始,来自 B 的任何调用都会导致"请求超时"。如果我从 A 呼叫 B,我会在星号 cli 上看到"订户缺席"消息。

为什么星号取消注册客户端 B?有什么建议吗?

p.s.:我在星号 cli 中看到以下错误:

chan_sip.c:3905 __sip_xmit: sip_xmit of 0x7f7df4027b00 (len 622) to aa.bb.cc.dd:nnnn returned -2: Interrupted system call

编辑:我的sip.conf文件如下

[myConf](!)
        disallow=all
        allow=g729
        allow=gsm
        allow=g723
        allow=ulaw
        allow=ilbc
        directmedia=no
        host=dynamic
        dtmfmode=rfc2833
        context=default
        type=friend
        transport=tls,tcp
        qualify=4000
        nat=force_rport,comedia
        encryption=yes
[A](myConf)
        secret=AAAA
[B](myConf)
        secret=BBBB

我不能给你确切的解决方案,但我可以指出它可能是什么问题。

您在 chan_sip.c 中遇到问题的代码的文档部分说

 * return length of transmitted message, XMIT_ERROR on know network failures -1 on other failures

在您的情况下,您将陷入其他故障作为中断的系统调用。该消息导致我因此处缺乏活动而暂停了一个未解决的错误。所以我的出价是这个错误与操作系统更相关,而不是Asterisk本身。

我下面的问题是,如果你反转顺序(首先寄存器 B,然后寄存器 A)是最后一个收到错误的人吗?如果是,那么您可以开始查看selinux或任何其他在建立连接后杀死的安全工具。否则,您可能需要更新错误,并让Asterisk的人修复错误。

让我们知道结果,找到带有修复:)的帖子总是很高兴

我认为您需要处理 NAT

http://www.voip-info.org/wiki/view/Asterisk+SIP+NAT+solutions

或者您检查了您的 B 是否可以从星号获取消息并正确回答。更多信息可以使用 sip debug 获得

asterisk -r 
sip set debug on

最新更新