eXosip的register注册
转载于: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)