sip注册失败问题

肥多罗 2011-09-29 12:04:17
---发送一个注册信息后,服务器返回注册失败,响应值为401,然后我根据event->rid创建一个osip_message_t准备发送一个带验证信息的注册包,在调用eXosip_register_build_register函数返回-3失败了

eXosip_register_build_register (int rid, int expires, osip_message_t ** reg)
这个函数一直返回-3,查看源码发现是在这个函数的下面那段代码里出错了。
if (jr->r_last_tr != NULL)
{
if (jr->r_last_tr->state != NICT_TERMINATED
&& jr->r_last_tr->state != NICT_COMPLETED)
{
return OSIP_WRONG_STATE;
}
}

有人知道为什么吗?谢谢
...全文
5092 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷面_寒枪 2013-07-31
  • 打赏
  • 举报
回复
我也遇到这个问题,它总是返回-3. 但是有时候我又能注册成功。太奇怪了。 eXosip_register_build_initial_register() eXosip_register_send_register() eXosip_event_wait() eXosip_lock() eXosip_clear_authentication_info() eXosip_add_authentication_info() eXosip_register_build_register() eXosip_register_send_register() eXosip_unlock() 我是这样一个操作顺序。 总是在eXosip_register_build_register返回-3
abu23 2012-11-21
  • 打赏
  • 举报
回复
osip_authorization_t* auth; char* szAuth = NULL; int ret = osip_message_get_authorization(reg, 0, &auth); if (0 > ret) DEBUG_INFO("Failed to get Authorization header."); ret = osip_authorization_to_str(auth, &szAuth); if (0 > ret) DEBUG_INFO("Failed to get a string representation of an Authorization element."); m_strAuth = szAuth; osip_free(szAuth);
太阳正暖 2012-11-05
  • 打赏
  • 举报
回复
引用 4 楼 wxflul 的回复:
解决了 需要在返回401后 把验证信息保存下来 然后再当心跳发送
我也是遇到这个问题,刚接触SIP,请问怎么保存服务器401回复中所带的鉴权信息,以及怎么发送心跳啊?
lqc1002000 2011-10-18
  • 打赏
  • 举报
回复
ddddddd
肥多罗 2011-10-10
  • 打赏
  • 举报
回复
解决了 需要在返回401后 把验证信息保存下来 然后再当心跳发送
肥多罗 2011-10-08
  • 打赏
  • 举报
回复
国庆回来自己顶下~~
ziyue007 2011-09-30
  • 打赏
  • 举报
回复
我用的是eXosip_register_build_initial_register(from, proxy, NULL, expires, ®);
然后eXosip_register_send_register(ret, reg);//Send a REGISTER request for an existing registration
肥多罗 2011-09-30
  • 打赏
  • 举报
回复
哦 第一次注册时不带验证信息,收到401响应后再发送一次带验证信息的注册包

1,394

社区成员

发帖
与我相关
我的任务
社区描述
VOIP相关技术探讨专区
社区管理员
  • VOIP技术探讨社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧