exOsip Register 心跳處理

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.