我在android上为pjsip创建了最新的主干,得到了stun错误:
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;
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;但没有成功...
发布于 2013-12-10 06:19:33
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 ...
https://stackoverflow.com/questions/20481630
复制相似问题