summaryrefslogtreecommitdiff
path: root/pjsip/src
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2015-07-06 08:51:45 +0000
committerNanang Izzuddin <nanang@teluu.com>2015-07-06 08:51:45 +0000
commitfb796ac321a427e61e359841e5587ced0d97a937 (patch)
treed36a784662a20d4afc9d534122075c7b95f16a4e /pjsip/src
parent82c8b2985a57fdcf75720bc2f472dd9db967c6b3 (diff)
Close #1865: Start NAT type detection after first STUN server resolution succeeds to avoid blocked main thread when STUN server is down.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5127 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c7
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c14
2 files changed, 15 insertions, 6 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index c7f54eed..0d40b142 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -1463,6 +1463,13 @@ static void internal_stun_resolve_cb(const pj_stun_resolve_result *result)
pjsua_var.stun_status = result->status;
if ((result->status == PJ_SUCCESS) && (pjsua_var.ua_cfg.stun_srv_cnt>0)) {
pj_memcpy(&pjsua_var.stun_srv, &result->addr, sizeof(result->addr));
+
+ /* Perform NAT type detection if not yet */
+ if (pjsua_var.nat_type == PJ_STUN_NAT_TYPE_UNKNOWN &&
+ pjsua_var.ua_cfg.nat_type_in_sdp)
+ {
+ pjsua_detect_nat_type();
+ }
}
}
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 99dc9614..9c70f264 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -164,12 +164,14 @@ pj_status_t pjsua_media_subsys_start(void)
#endif
/* Perform NAT detection */
- if (pjsua_var.ua_cfg.stun_srv_cnt) {
- status = pjsua_detect_nat_type();
- if (status != PJ_SUCCESS) {
- PJ_PERROR(1,(THIS_FILE, status, "NAT type detection failed"));
- }
- }
+ // Performed only when STUN server resolution by pjsua_init() completed
+ // successfully (see ticket #1865).
+ //if (pjsua_var.ua_cfg.stun_srv_cnt) {
+ //status = pjsua_detect_nat_type();
+ //if (status != PJ_SUCCESS) {
+ // PJ_PERROR(1,(THIS_FILE, status, "NAT type detection failed"));
+ //}
+ //}
pj_log_pop_indent();
return PJ_SUCCESS;