从Freeswitch 1.2.9(1.2.9 + git~20130506T233047Z~7c88f35451)升级到Freeswitch 1.4.21(1.4.21-35~64bit)后,freeswitch在挂断电视后停止掉频道,当我们试过要做一个手册uuid_kill
,它给了我们这个可爱的错误:
-ERR No such channel!
尽管节目频道显示频道明显存在。从我见过的jira.freeswitch.com上的错误来看,它看起来可能是代码问题。关于我们的环境/代码的更多信息:
我们有一个连接到客户端的python twisted循环,因此客户端可以在服务器上运行命令,反之亦然。一旦扭曲的连接死亡(客户端关闭/断开连接),通道也会被杀死,但我们需要通道在此之前死亡,因为我们每秒需要大量的呼叫并且需要它们在另一个时死掉结束是断开的。我们无法在每次通话结束时关闭并重新打开客户端,或者重新连接,因为这会花费太多时间并且无法实现我们使用软件的目的。
再一次,当我们改为使用apt-get而不是直接从源安装freeswitch服务器时,才会发生此错误。这让我们可以更快地启动和运行新服务器,我们宁愿不花费额外的时间来使用我们以前的方法。请告诉我是否有任何您想要查看的代码,并要求您提供所需的任何说明,但我们希望尽快修复此问题。提前谢谢!
修改:为了进一步说明,我们主要在我们的软件中使用mod_callcenter
,mod_conference
和mod_sofia
。
编辑2:为了进一步说明,我们在Ubuntu 14.04服务器上运行
我们正在使用ESL连接从frethon中连接并运行freeswitch中的命令,我们认为这是问题的根源。我们尝试退出连接,但这会破坏两个频道。
此外,在Jira上针对此问题提交的所有错误都已关闭,因为它们不是错误。我想我在这里可能会有更多的成功,因为它是一个编程类型的问题。
答案 0 :(得分:1)
您需要在测试环境中重现该问题,并将错误报告提交给Jira。最好你也应该尝试用最新的master分支重现它(只支持Debian 8): https://freeswitch.org/confluence/display/FREESWITCH/Debian+8+Jessie
当我使用mod_perl时,我遇到了类似的问题,并且Perl对象指的是一个会话,并且它没有被正确销毁(如果我没记错的话,我有两个Perl对象连接到同一个会话)。这导致了无法杀死的频道。
我想您在应用程序和FreeSWITCH之间使用ESL连接,对吧?