exOsip Register 心跳处理

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);

 


在拿到认证字符串后 发送心跳时就不用每次都产生挑战信息了


发送心跳的方法
osip_message_t *msg=NULL;
eXosip_register_build_register(m_nRegisterID, 300, &msg); //根据以前的RegisterID 重新产生一个注册包
{//将认证字符串添加入REGISTER消息中

    osip_header_t *pMsgHeader=NULL;
    osip_message_header_get_byname(msg,(const char *)"authorization",0,&pMsgHeader);
    if (pMsgHeader==NULL)
        osip_message_set_header(msg,(const char *)"authorization",m_strAuth);
    else
        strcpy(pMsgHeader->hvalue,m_strAuth);
}
eXosip_register_send_register(m_nRegisterID,msg);

 


注销的方法与心跳包处理方法相投


不过是 expires为0罢了


osip_message_t *msg=NULL;
eXosip_register_build_register(m_nRegisterID, 0, &msg); //根据以前的RegisterID 重新产生一个注册包
{//将认证字符串添加入REGISTER消息中

    osip_header_t *pMsgHeader=NULL;
    osip_message_header_get_byname(msg,(const char *)"authorization",0,&pMsgHeader);
    if (pMsgHeader==NULL)
        osip_message_set_header(msg,(const char *)"authorization",m_strAuth);
    else
        strcpy(pMsgHeader->hvalue,m_strAuth);
}
eXosip_register_send_register(m_nRegisterID,msg);


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zblue78/archive/2008/11/17/3319078.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值