织梦CMS - 轻松建站从此开始!

罗索

exOsip Register 心跳处理

jackyhwei 发布于 2011-06-21 09:12 点击:次 
发出了一个注册请求,服务器会回一个401注册挑战,然后 使用event的rid 重现产生一个注册包,在拿到认证字符串后 发送心跳时就不用每次都产生挑战信息了
TAG:

eXosip_add_authentication_info 
eXosip_register_build_initial_register 

eXosip_register_send_register 发送
 
发送一个注册包
eXosip_clear_authentication_info();
eXosip_add_authentication_info(m_userid,m_userid,m_passwd,"MD5",NULL)) 添加认证信息
osip_message_t *reg;
m_localurl.Format("sip:%s@%s",m_userid,SIP_SERVER);
m_nRegisterID = eXosip_register_build_initial_register(m_localurl,m_sipserverurl,NULL,300,&reg);初始化一个注册ID 并产生一个注册包
eXosip_register_send_register(m_nRegisterID,reg)
这样就发出了一个注册请求
 
服务器会回一个401注册挑战
在EXOSIP_REGISTRATION_FAILURE中处理中 判断event->response->status_code是否为401
 
然后 使用event的rid 重现产生一个注册包
 
osip_message_t *reg;
eXosip_register_build_register(event->rid, 300, &reg);//
//取回认证的字符串authorization
{
    osip_authorization_t * auth;
    char *strAuth=NULL;
    osip_message_get_authorization(reg,0,&auth);
    osip_authorization_to_str(auth,&strAuth);
    strcpy(m_strAuth,strAuth);//保存认证字符串
    delete []strAuth;
}
eXosip_register_send_register(event->rid,reg);
 
 
在拿到认证字符串后 发送心跳时就不用每次都产生挑战信息了
 
发送心跳的方法
  1. osip_message_t *msg=NULL; 
  2. //根据以前的RegisterID 重新产生一个注册包
  3. eXosip_register_build_register(m_nRegisterID, 300, &msg); 
  4. {//将认证字符串添加入REGISTER消息中 
  5.     osip_header_t *pMsgHeader=NULL; 
  6.     osip_message_header_get_byname(msg,(const char *)"authorization",0,&pMsgHeader); 
  7.     if (pMsgHeader==NULL) 
  8.         osip_message_set_header(msg,(const char *)"authorization",m_strAuth); 
  9.     else 
  10.         strcpy(pMsgHeader->hvalue,m_strAuth); 
  11. eXosip_register_send_register(m_nRegisterID,msg); 
注销的方法与心跳包处理方法相投
 
不过是 expires为0罢了
  1. osip_message_t *msg=NULL; 
  2. eXosip_register_build_register(m_nRegisterID, 0, &msg); //根据以前的RegisterID 重新产生一个注册包 
  3. {//将认证字符串添加入REGISTER消息中 
  4.     osip_header_t *pMsgHeader=NULL; 
  5.     osip_message_header_get_byname(msg,(const char *)"authorization",0,&pMsgHeader); 
  6.     if (pMsgHeader==NULL) 
  7.         osip_message_set_header(msg,(const char *)"authorization",m_strAuth); 
  8.     else 
  9.         strcpy(pMsgHeader->hvalue,m_strAuth); 
  10. eXosip_register_send_register(m_nRegisterID,msg); 

 

(zblue78)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201106/14586.html]
本文出处:CSDN博客 作者:zblue78
顶一下
(6)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容