diff options
author | Liong Sauw Ming <ming@teluu.com> | 2016-05-13 10:56:48 +0000 |
---|---|---|
committer | Liong Sauw Ming <ming@teluu.com> | 2016-05-13 10:56:48 +0000 |
commit | 7f59e4d6d01926c2535937463095e8d769be4ad9 (patch) | |
tree | 8b95e6a62838cb82e8856a9b19fdc64fcafe259a /pjsip/src/pjsua-lib/pjsua_core.c | |
parent | f5034fe8896342601b10dd2381b06dcb754e3f6c (diff) |
Fixed #1918: Add API to update STUN servers and option to retry STUN for media on failure
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5297 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_core.c')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_core.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index 55e7ef10..45918bd7 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -1376,6 +1376,36 @@ on_return: /* + * Update STUN servers. + */ +PJ_DEF(pj_status_t) pjsua_update_stun_servers(unsigned count, pj_str_t srv[], + pj_bool_t wait) +{ + unsigned i; + pj_status_t status; + + PJ_ASSERT_RETURN(count && srv, PJ_EINVAL); + + PJSUA_LOCK(); + + pjsua_var.ua_cfg.stun_srv_cnt = count; + for (i = 0; i < count; i++) { + if (pj_strcmp(&pjsua_var.ua_cfg.stun_srv[i], &srv[i])) + pj_strdup(pjsua_var.pool, &pjsua_var.ua_cfg.stun_srv[i], &srv[i]); + } + pjsua_var.stun_status = PJ_EUNKNOWN; + + status = resolve_stun_server(wait); + if (wait == PJ_FALSE && status == PJ_EPENDING) + status = PJ_SUCCESS; + + PJSUA_UNLOCK(); + + return status; +} + + +/* * Resolve STUN server. */ PJ_DEF(pj_status_t) pjsua_resolve_stun_servers( unsigned count, @@ -1481,6 +1511,7 @@ static void internal_stun_resolve_cb(const pj_stun_resolve_result *result) /* Perform NAT type detection if not yet */ if (pjsua_var.nat_type == PJ_STUN_NAT_TYPE_UNKNOWN && + !pjsua_var.nat_in_progress && pjsua_var.ua_cfg.nat_type_in_sdp) { pjsua_detect_nat_type(); |