summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2015-12-24 12:25:58 +0000
committerNanang Izzuddin <nanang@teluu.com>2015-12-24 12:25:58 +0000
commitfb310343464e5f33e44dd4bdb0218aa21df30505 (patch)
tree2ba487548a5e934342762624d9250504651dd5fa
parent16376f0f1f796ed4bf483a663ab4bf20a1d97d7f (diff)
Misc (re #1882): Fixed bug STUN still being used in media transport UDP & ICE after STUN is disabled in account config (media_stun_use == PJSUA_STUN_USE_DISABLED).
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5217 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/include/pjsua-lib/pjsua_internal.h1
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c10
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c19
3 files changed, 22 insertions, 8 deletions
diff --git a/pjsip/include/pjsua-lib/pjsua_internal.h b/pjsip/include/pjsua-lib/pjsua_internal.h
index 2e81c1ea..dc98cc6f 100644
--- a/pjsip/include/pjsua-lib/pjsua_internal.h
+++ b/pjsip/include/pjsua-lib/pjsua_internal.h
@@ -608,6 +608,7 @@ pj_status_t normalize_route_uri(pj_pool_t *pool, pj_str_t *uri);
/* acc use stun? */
pj_bool_t pjsua_sip_acc_is_using_stun(pjsua_acc_id acc_id);
+pj_bool_t pjsua_media_acc_is_using_stun(pjsua_acc_id acc_id);
/* Get local transport address suitable to be used for Via or Contact address
* to send request to the specified destination URI.
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index 398d96e8..61501431 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -2480,7 +2480,15 @@ pj_bool_t pjsua_sip_acc_is_using_stun(pjsua_acc_id acc_id)
pjsua_acc *acc = &pjsua_var.acc[acc_id];
return acc->cfg.sip_stun_use != PJSUA_STUN_USE_DISABLED &&
- pjsua_var.ua_cfg.stun_srv_cnt != 0;
+ pjsua_var.ua_cfg.stun_srv_cnt != 0;
+}
+
+pj_bool_t pjsua_media_acc_is_using_stun(pjsua_acc_id acc_id)
+{
+ pjsua_acc *acc = &pjsua_var.acc[acc_id];
+
+ return acc->cfg.media_stun_use != PJSUA_STUN_USE_DISABLED &&
+ pjsua_var.ua_cfg.stun_srv_cnt != 0;
}
/*
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 8acd8423..f659e23e 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -253,7 +253,7 @@ static pj_status_t create_rtp_rtcp_sock(pjsua_call_media *call_med,
af = use_ipv6 ? pj_AF_INET6() : pj_AF_INET();
/* Make sure STUN server resolution has completed */
- if (!use_ipv6 && pjsua_sip_acc_is_using_stun(call_med->call->acc_id)) {
+ if (!use_ipv6 && pjsua_media_acc_is_using_stun(call_med->call->acc_id)) {
status = resolve_stun_server(PJ_TRUE);
if (status != PJ_SUCCESS) {
pjsua_perror(THIS_FILE, "Error resolving STUN server", status);
@@ -350,7 +350,8 @@ static pj_status_t create_rtp_rtcp_sock(pjsua_call_media *call_med,
* If we're configured to use STUN, then find out the mapped address,
* and make sure that the mapped RTCP port is adjacent with the RTP.
*/
- if (!use_ipv6 && pjsua_sip_acc_is_using_stun(call_med->call->acc_id) &&
+ if (!use_ipv6 &&
+ pjsua_media_acc_is_using_stun(call_med->call->acc_id) &&
pjsua_var.stun_srv.addr.sa_family != 0)
{
char ip_addr[32];
@@ -747,10 +748,12 @@ static pj_status_t create_ice_media_transport(
acc_cfg = &pjsua_var.acc[call_med->call->acc_id].cfg;
/* Make sure STUN server resolution has completed */
- status = resolve_stun_server(PJ_TRUE);
- if (status != PJ_SUCCESS) {
- pjsua_perror(THIS_FILE, "Error resolving STUN server", status);
- return status;
+ if (pjsua_media_acc_is_using_stun(call_med->call->acc_id)) {
+ status = resolve_stun_server(PJ_TRUE);
+ if (status != PJ_SUCCESS) {
+ pjsua_perror(THIS_FILE, "Error resolving STUN server", status);
+ return status;
+ }
}
/* Create ICE stream transport configuration */
@@ -765,7 +768,9 @@ static pj_status_t create_ice_media_transport(
ice_cfg.opt = acc_cfg->ice_cfg.ice_opt;
/* Configure STUN settings */
- if (pj_sockaddr_has_addr(&pjsua_var.stun_srv)) {
+ if (pj_sockaddr_has_addr(&pjsua_var.stun_srv) &&
+ pjsua_media_acc_is_using_stun(call_med->call->acc_id))
+ {
pj_sockaddr_print(&pjsua_var.stun_srv, stunip, sizeof(stunip), 0);
ice_cfg.stun.server = pj_str(stunip);
ice_cfg.stun.port = pj_sockaddr_get_port(&pjsua_var.stun_srv);