首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pjsip android stun超时

pjsip android stun超时
EN

Stack Overflow用户
提问于 2013-12-10 05:55:19
回答 1查看 850关注 0票数 1

我在android上为pjsip创建了最新的主干,得到了stun错误:

代码语言:javascript
复制
12-10 00:19:25.340  21917-21917/I/pjsua﹕ pjsua version 2.1-svn for Linux-3.0.15/armv7l initialized
12-10 00:19:25.345  21917-21917/I/pjsua﹕ PJSUA state changed: CREATED --> INIT
12-10 00:19:25.345  21917-21917/I/pjsua﹕ Module "mod-default-handler" registered
12-10 00:19:25.365  21917-21917/I/pjsua﹕ STUN mapped address found/changed: ip1:40865
12-10 00:19:25.365  21917-21917/I/pjsua﹕ STUN resolution success, using ip1:3480, address is ip2:3480
12-10 00:19:27.380  21917-21917/I/pjsua﹕ Error contacting STUN server: Received no response from STUN server (PJLIB_UTIL_ESTUNNOTRESPOND) [status=320010]
12-10 00:19:27.380  21917-21917/I/pjsua﹕ Shutting down, flags=0...
12-10 00:19:27.380  21917-21917/I/pjsua﹕ PJSUA state changed: INIT --> CLOSING

同样的stun配置可以在相同的代码下正常工作(在iOS和旧的pjsip干线上):

my_config->cfg.stun_srv_cnt = 3;

代码语言:javascript
复制
const char *stun = "ip1:3480";
if (stun && strlen(stun)) pj_strdup2_with_null(my_config->pool,&(my_config->cfg.stun_srv[0]),stun);
const char *stun1 = "ip2:3480";
if (stun1 && strlen(stun1)) pj_strdup2_with_null(my_config->pool,&(my_config->cfg.stun_srv[1]),stun1);
const char *stun2 = "ip3:3480";
if (stun2 && strlen(stun2)) pj_strdup2_with_null(my_config->pool,&(my_config->cfg.stun_srv[2]),stun2);

ip1-3是我的ip地址,如1.1.1.1

对我来说有两件事看起来很奇怪: 1.根据日志,stun服务器被找到了ip地址,但由于未知的原因,又开始重新查找。2.为什么pjsip lib不尝试下一台服务器,而只是停止库。

我尝试执行_config->cfg.stun_ignore_failure= PJ_TRUE;但没有成功...

EN

回答 1

Stack Overflow用户

发布于 2013-12-10 06:19:33

代码语言:javascript
复制
Index: pjsip/sources/pjsip/src/pjsua-lib/pjsua_core.c
===================================================================
--- pjsip.orig/sources/pjsip/src/pjsua-lib/pjsua_core.c 2013-03-31 19:06:27.202008510 +0200
+++ pjsip/sources/pjsip/src/pjsua-lib/pjsua_core.c  2013-03-31 19:06:31.322008598 +0200
@@ -1954,7 +1954,7 @@
             pj_ntohs(pjsua_var.stun_srv.ipv4.sin_port);
    status = pjstun_get_mapped_addr2(&pjsua_var.cp.factory, &stun_opt,
                     1, &sock, &p_pub_addr->ipv4);
-   if (status != PJ_SUCCESS) {
+   if (status != PJ_SUCCESS && !pjsua_var.ua_cfg.stun_ignore_failure) {
        pjsua_perror(THIS_FILE, "Error contacting STUN server", status);
        pj_sock_close(sock);
        return status;

感谢来自csipsimple的Regis ...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20481630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档