路由流程分析
摘机前


1、收到第一个INVITE时,身份验证失败,发起挑战。【407后,终端回复的ACK是一个响应消息】
2、第二次收到INVITE时,终端带上验证信息,验证通过。
3、移除身份验证头信息
4、查找被叫用户地址
5、设置分支路由
6、执行有状态转发 KSR.tm.t_relay()
7、触发分支路由
8、执行退出 KSR.x.exit()
9、响应回调函数(响应路由)收到100、180 状态码
摘机后


1、响应路由收到200状态码
2、主叫发送ACK,收到ACK请求
3、进入会话处理
4、执行有状态转发 KSR.tm.t_relay()。
?【ACK这里未触发分支路由,测试发现,为ACK设置分支路由后,也不会触发】从Kamailio发出去的ack请求,不会触发任何路由
挂机


1、被叫挂机,收到BYE请求
2、进入会话处理
3、设置分支路由(这里为什么会重新设置分支路由,是因为重启了一个事务)
4、转发
5、触发分支路由
6、退出
并未收到200响应码路由?
因为代码里面没有给BYE请求设置响应路由
1 | if KSR.is_method_in("IBSU") then |
tips:
KSR.x.exit(); 后面的流程就不会执行。