diff options
author | Matt Jordan <mjordan@digium.com> | 2017-03-16 10:39:00 -0500 |
---|---|---|
committer | Matt Jordan <mjordan@digium.com> | 2017-03-16 14:03:32 -0600 |
commit | 776ffd7724d1656b45fac42ea8df2902770322d0 (patch) | |
tree | 9bd93f9a443a6d71d6588c36e3eb299988e90a89 /res/res_pjsip_session.c | |
parent | 57be9cf8f98c5e93b60cafb1cc8cbbed154f408a (diff) |
res/res_pjsip_session: Only check localnet if it is defined
If local_net is not defined on a transport, transport_state->localnet
will be NULL. ast_apply_ha will, be default, return AST_SENSE_ALLOW in
this case, causing the external_media_address, if set, to be skipped.
This patch causes us to only check if we are sending within a network if
local_net is defined.
ASTERISK-26879 #close
Change-Id: Ib661c31a954cabc9c99f1f25c9c9a5c5b82cbbfb
Diffstat (limited to 'res/res_pjsip_session.c')
-rw-r--r-- | res/res_pjsip_session.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c index 3c4f102f8..4bbb9267b 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -3112,7 +3112,10 @@ static void session_outgoing_nat_hook(pjsip_tx_data *tdata, struct ast_sip_trans ast_copy_pj_str(host, &sdp->conn->addr, sizeof(host)); ast_sockaddr_parse(&addr, host, PARSE_PORT_FORBID); - if (ast_apply_ha(transport_state->localnet, &addr) != AST_SENSE_ALLOW) { + if (!transport_state->localnet + || (transport_state->localnet + && ast_apply_ha(transport_state->localnet, &addr) == AST_SENSE_ALLOW)) { + ast_debug(5, "Setting external media address to %s\n", transport->external_media_address); pj_strdup2(tdata->pool, &sdp->conn->addr, transport->external_media_address); } } |