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
This commit is contained in:
Matt Jordan
2017-03-16 10:39:00 -05:00
parent 76e64f5589
commit e6dc28b78f
4 changed files with 33 additions and 27 deletions

View File

@@ -867,10 +867,11 @@ static void change_outgoing_sdp_stream_media_address(pjsip_tx_data *tdata, struc
ast_sockaddr_parse(&addr, host, PARSE_PORT_FORBID);
/* Is the address within the SDP inside the same network? */
if (ast_apply_ha(transport_state->localnet, &addr) == AST_SENSE_ALLOW) {
if (transport_state->localnet
&& ast_apply_ha(transport_state->localnet, &addr) == AST_SENSE_ALLOW) {
return;
}
ast_debug(5, "Setting media address to %s\n", transport->external_media_address);
pj_strdup2(tdata->pool, &stream->conn->addr, transport->external_media_address);
}