diff options
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_core.c | 7 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 14 |
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; |