根据RFC 3261,在PROCEEDING或TRYING状态下服务器事务没有超时。据我了解,这意味着TU必须向交易发送响应。但是,如果TU失败,交易应该有办法知道并终止。
根据RFC 3261?
,哪种行为是正确的服务器事务是否应检测到TU失败?
我应该添加自己的超时吗?假设另一方的客户端事务无论如何都会超时,在超时后终止服务器事务应该是安全的。预期的客户交易超时。
还有其他行为吗?
答案 0 :(得分:2)
事务中的超时是处理远程失败 - 网络分区,远程机器崩溃等等。
SIP不会告诉您在本地失败时该怎么做,比如您的事务用户层崩溃了。
您的TU是整个SIP堆栈的“大脑”,因此如果失败,您的SIP堆栈将整体失败。我不认为交易层尝试继续运作是明智的。
某些事务可能会在您的应用程序重新启动过程中有意义地持续存在 - 比如在线状态订阅 - 而其他类似的调用可能不会。您可以将这些“可持久”事务的状态存储在磁盘上,并在重新启动应用程序后将其还原。