2016-05-17 80 views
1

我们有一种情况,UAC向服务器发送邀请,服务器以3xx-6xx响应。如果UAC没有在这个响应上发送一个ACK - 没有重传。Mobicents - JAIN-SIP-RI不会重传错误邀请响应

根据RFC3261(https://www.ietf.org/rfc/rfc3261.txt)如果没有收到ACK,则底层堆栈应重新发送响应。

我们的设置是一个MSS-tomcat(mobicents 8,tomcat 8)的Linux工作站。

有没有人遇到过这个?

Logs found here

谢谢!

+1

这当然是不确定的。你能否附上server.log? (请将JAINSIP和SipServlet日志级别设置为DEBUG) –

+0

感谢评论@Jaime。 将日志添加到原始帖子。 –

+1

我可以看到INVID与呼号ID:[email protected]。该邀请被拒绝,500(由于非GNF目标号码导致呼叫被阻止)。这是你最初提到的场景吗? –

回答

0

如果呼叫的SIP信令是通过tcp(而不是udp)传输的,则不会有任何重传错误响应,因为可靠性是由底层传输处理的。

但是请注意,对于200响应邀请,这不是真的,因为2xx的ACK不是逐跳的,并且与响应相比可能在网络中采用不同的路径(某些proxys可能使用了udp,其中200可能已经迷路了)。

+0

我们使用UDP工作,但在这种情况下似乎并不是真正的问题 - 事实证明,我们在发送500条消息后立即终止了这条腿,因此动员者事实上并没有一个会话来工作。 –

0

发现问题的根源: 事实证明,在发送500条消息之后,我们以适用的方式终止了Leg。这导致sip-stack没有有效会话返回,因此它根本不知道是否收到ACK。

注意:当我们使用WebSphere sip-stack时,堆栈将简单地忽略应用程序在此情况下终止分支的请求,并将其延迟到接收到ACK或重新传输超时之后。