`
hulunberbus
  • 浏览: 859153 次
文章分类
社区版块
存档分类
最新评论

这个是eXosip 的BUG吗?!!!

 
阅读更多
在调用eXosip_init()时,
经常莫名的不返回!
但是逐行跟踪的话就 没有问题
最后定位到下面的代码不返回
也就是说 如果连续调用jpipe时的话就可能不返回!!
exconf.c
#ifdef OSIP_MT
/* open a TCP socket to wake up the application when needed. */
eXosip.j_socketctl = jpipe ();
if (eXosip.j_socketctl == NULL)
return -2;
eXosip.j_socketctl_event = jpipe ();
if (eXosip.j_socketctl_event == NULL)
return -3;
#endif
然后跟踪jpipe ,猜测是accept的问题
也就是下的一段代码
jpipe.c
connect (my_pipe->pipes[1], (struct sockaddr *) &raddr, sizeof (raddr));

my_pipe->pipes[0] = accept (s, NULL, NULL);

的问题

没有找到什么好的办法去处理上面的为题

最后用了一个比较笨的办法
eXosip.j_socketctl = jpipe ();
if (eXosip.j_socketctl == NULL)
return -2;
Sleep(100); //添加的代码
eXosip.j_socketctl_event = jpipe ();
if (eXosip.j_socketctl_event == NULL)
return -3;

后记:
根据推断 可能是在非阻塞的connect 后 链接丢失 然后就被阻塞在了accept中了!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics