轉載於:http://blog.sina.com.cn/s/blog_4868f98601018ioh.html
這個測試程序是從eXosip原有的測試程序改造的。原程序是tools 目錄下的 sip_reg.c
本程序主要改造了這幾個地方:
1) eXosip_event_wait() 函數的超時時間,從原來的1ms 修改為50ms
2) 對於初次注冊時,服務器返回401的情況。 調用函數 eXosip_add_authentication_info()發送鑒權信息。
其余的內容基本沒改,在我們的sipserver 上面注冊成功了。
從這個例程中 我們可以看出sip鑒權的基本流程
從sip角度看, 注冊過程是這樣的:
客戶端 server
| --------regester ---> |
| <----------401------ |
| ---regester + nonce -》 |
| 《----------200-------- |
其中 nonce中帶有鑒權信息。形如:
Authorization: Digest username="buxiangyi", realm="Yate",
nonce="143e882c902a9c38a3286e9043c35d40.1366083396", uri="sip:172.16.50.189:5060", response="8119330abd3ff5e4e26d2fa87b563b39", algorithm=MD5
對於 eXosip, 其處理過程如下:
1)eXosip_init (初始化)
|
v
2)eXosip_listen_addr (監聽sip端口)
|
v
3)eXosip_register_build_initial_register (構建一個register)
|
v
4)eXosip_register_send_register (發送register)
|
v
5)eXosip_event_wait (等待對端事件)
|
v
6)eXosip_execute (處理事件,調整內部狀態)
|
v
7)eXosip_automatic_action (根據當前狀況,發出響應消息)
之后應循環執行 5)-》 7)
