首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SIP UA必须在重新邀请之前等待Ack吗?

SIP UA必须在重新邀请之前等待Ack吗?
EN

Stack Overflow用户
提问于 2019-02-27 00:28:12
回答 1查看 498关注 0票数 0

尝试确定此场景中的正确行为。SIP向SBC发送Invite,SBC以200OK响应,但在收到B2BUA之前,SBC发送re-Invite以修改SDP,B2BUA以500Race条件响应。

呼叫流程:

代码语言:javascript
复制
Client          B2BUA            SBC
  |  Invite ->    |               |
  |               |  Invite ->    |
  |               |  <- 200 OK    |
  |   <- 200 OK   |               |
  |               |               |
  |               |  <- re-Invite |
  |               |  500 Race ->  |
  |               |               |

在RFC3261中,我找不到任何需要等待确认的引用。在section 14.1中,我确实看到了引用:

代码语言:javascript
复制
  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?

EN

回答 1

Stack Overflow用户

发布于 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或其他内容进行一些更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54890021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档