尝试确定此场景中的正确行为。SIP向SBC发送Invite,SBC以200OK响应,但在收到B2BUA之前,SBC发送re-Invite以修改SDP,B2BUA以500Race条件响应。
呼叫流程:
Client B2BUA SBC
| Invite -> | |
| | Invite -> |
| | <- 200 OK |
| <- 200 OK | |
| | |
| | <- re-Invite |
| | 500 Race -> |
| | |在RFC3261中,我找不到任何需要等待确认的引用。在section 14.1中,我确实看到了引用:
2. If there is an ongoing INVITE server transaction, the TU MUST
wait until the transaction reaches the confirmed or terminated
state before initiating the new INVITE.查看INVITE服务器事务图表,看起来200OK已经将服务器事务移动到终止状态,但我不确定这是否为此场景的正确上下文。
在发送re-Invite之前,SBC必须等待ACK,还是B2BUA应该接受re-Invite?
发布于 2019-02-27 20:13:42
出现竞争情况是正常的,因为B2BUA正在尝试同时处理两个INVITE请求,需要正确处理第一个INVITE。在您发送的同一文档中:
请注意,UAC不得在
对话框中,而另一个INVITE事务正在进行
方向。
1.如果存在正在进行的INVITE客户端事务,则在发起新的INVITE之前,TU必须等待,直到事务达到完成或终止状态。2.如果存在正在进行的INVITE服务器事务,则在发起新的INVITE之前,TU必须等待,直到事务达到确认或终止状态。
因此,您应该等待检索ACK,以确保第一个INVITE已完成处理,因为根据INVITE事务的结果,预计会有一些消息关闭对话框。对于接受的INVITE,此所需消息为ACK。在此之后,您可以发送RE-INVITE来对SDP或其他内容进行一些更改。
https://stackoverflow.com/questions/54890021
复制相似问题