Osip源代码框架19--Call的调用

Call创建流程

Exosip lib库提供了call的4类接口:

  • 第一次建立一个call的initial invite创建及发送接口;
  • 在dialog中创建及发送的其它request;
  • 在dialog中创建及发送对从对端发送过来的request的response;
  • 在invite请求中回应对端response的ACK的创建和发送。

eXosip_call_build_initial_invite的流程

把 eXosip_call_build_initial_invite 拆成 「参数校验 → 基础请求构造 → Dialog 外请求构建 → INVITE 字段补充 → 协议合规检查」
在这里插入图片描述

参数合法性校验(阶段 A)

检查 To 头域是否包含合法的 SIP URI(格式如 sip:user@domain.com)。
From 头域需符合 eXosip 初始化配置的生成规则(如 from_tag)。
依据 RFC 3261 第 8.1.1 节(SIP 消息格式)和第 12.1 节(Dialog 标识规则)。

基础请求初始化(阶段 B)

设置 SIP 版本为默认值 SIP/2.0
初始化 From 头域,包含由 eXosip 生成的 from_tag
生成全局唯一的 Call-ID,确保 Dialog 标识唯一性。
参考 RFC 3261 第 8.1.1.7 节(Call-ID 规则)和第 12.1.1 节(From/To Tag 规则)。

Dialog 外请求构造(阶段 C)

调用 generating_request_out_of_dialog 构建初始 INVITE 请求。
无需关联已有 Dialog 的 CSeq 或 Route 头域。
Dialog 外请求的 Call-ID 为全新生成,CSeq 从 1 开始递增。
Dialog 内请求需复用 Call-ID 和 From/To Tag,且 CSeq 必须大于当前 Dialog 记录值(RFC 3261 第 12.2.1.1 节)。

INVITE 专属字段填充(阶段 D)

通过 _eXosip_dialog_add_contact 填充 Contact 头域(如 sip:local@192.168.1.100:5060)。
使用 osip_message_set_subject 设置可选呼叫主题(如会议名称)。
通过 osip_message_set_expires 设置会话超时时间(默认 3600 秒)。
协议依据:RFC 3261 第 8.1.1.8 节(Contact)和第 20.19 节(Expires)。

协议合规性检查(阶段 E)

校验 CSeq 是否为初始值(如 1)且方法为 INVITE
Route 头域可选,未指定时依赖 eXosip 默认路由配置。
若包含 SDP,需确保 Content-Typeapplication/sdp 且符合 RFC 4566 格式。### 表格:Dialog 内外请求的核心差异

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八月的雨季997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值