Jain sip return 481 收到再见请求

Jain sip return 481 for a received bye request

我正在尝试使用 Jain Sip 创建一个 sip 用户代理,它可以接收 INVITE/ACK/BYE,并在必要时使用 SDP 发回响应。

可以接收INVITE,发送OK响应,接收ACK,然后进行RTP包传输。但是当它收到对方的BYE时,Jain Sip自己就会抛出一个481。

我使用 SipProvider.sendResponse(response) 无状态发送响应。事实证明,如果我切换到有状态(从传入请求中获取 NewServerTransaction,然后使用 SipServerTransaction.sendResponse),一切正常。所以我想知道它们之间有什么区别?无论如何,我可以无状态地做到这一点吗?

基本上,当有状态时,JAIN-SIP 堆栈将自己的资源分配给 运行 SIP 状态机,用于事务和对话。正如您可以想象的那样,如果您只是部分地为通话做这件事,它就会失控。我的猜测是您打开了自动对话支持,并且您正在以某种方式混合有状态和无状态模式。如果您想无状态,请确保没有自动对话框。最好的调试方法是查看 DEBUG 日志和代码。