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