此部分隻是一個流程的分解,一般按照這個流程編寫自己的代碼就可以通過驗證,隻是一般情況而已。
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