天天看点

OSIP注册流程(带权限验证)

此部分只是一个流程的分解,一般按照这个流程编写自己的代码就可以通过验证,只是一般情况而已。

A)      第一次注册

1、  初始化SIP消息osip_message_init

2、  设置SIP属性值

osip_message_set_method,

osip_message_set_version,

osip_message_set_to,

osip_message_set_user_agent,

osip_message_set_from,

osip_call_id_init,

osip_cseq_init,

osip_message_set_max_forwards,

osip_message_set_via,

osip_message_set_contact

3、  关联SIP消息和Transaction

osip_transaction_init,

osip_new_outgoing_sipmessage,

osip_message_force_update,

osip_transaction_add_event

4、  触发回调

osip_ict_execute,

osip_ist_execute,

osip_nict_execute,

osip_nist_execute,

osip_retransmissions_execute,

osip_timers_nict_execute,

osip_timers_ict_execute,

osip_timers_nist_execute,

osip_timers_ist_execute

5、  处理回调,包括发送回调,超时回调,错误回调

6、如果服务器没有注册认证,则应该可以收到2XX

7、如果服务器需要注册认证,则应该收到401或407

8、处理4XX回调

MSG_IS_RESPONSE_FOR(_pMsg,"REGISTER")

9、修改发送消息中VIA的branch

10、增加CSep的Number

11、增加认证信息,参考eXosip的__eXosip_create_authorization_header

12、重复3-11

13、处理2XX回调

14、释放已经Terminate的Transaction

继续阅读