流程图

osip_transaction_find 事务匹配流程梳理
一、流程总览
从 osip_transaction_find 函数入口开始,依据消息类型(Incoming Request/Response 或其他),结合哈希表启用状态、Top Via 头 branch_id 存在性、请求 / 响应方法类型(如 INVITE 等),分支处理事务匹配逻辑,核心关联 RFC3261 协议兼容规则,实现高效匹配或降级兼容。
二、流程详细拆解
(一)入口与基础分支
从 osip_transaction_find 函数进入流程,首要判断消息类型:
- 若为 Incoming Request,进入请求处理分支。
- 若为 Incoming Response,进入响应处理分支。
- 若为其他类型(如本地发出请求),直接退出或走补充分支(利用 transaction_id 快速匹配)。
(二)Incoming Request 处理分支
针对 Incoming Request,执行以下匹配逻辑:
哈希表启用判断:
- 若启用哈希表(HAVE_DICT_DICT_H 为真),检查 Top Via 头的 branch_id。
- 若未启用哈希表,执行 RFC3261 17-2-3 兼容逻辑,遍历事务链表,通过 Call-ID、CSeq、Via 等字段匹配。
branch_id 检查:
- 若无 branch_id,降级执行 RFC3261 17-2-3 兼容逻辑(遍历链表匹配)。
- 若有 b

最低0.47元/天 解锁文章
156

被折叠的 条评论
为什么被折叠?



