--- ./res/res_pjsip_sdp_rtp.c.orig 2017-03-10 14:35:54.023556130 +1100 +++ ./res/res_pjsip_sdp_rtp.c 2017-03-10 16:41:19.036036397 +1100 @@ -179,6 +179,14 @@ if (session->endpoint->media.bind_rtp_to_media_address && !ast_strlen_zero(session->endpoint->media.address)) { ast_sockaddr_parse(&temp_media_address, session->endpoint->media.address, 0); media_address = &temp_media_address; + } else { + struct ast_sip_transport *transport = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "transport", session->endpoint->transport); + if (transport && transport->state) { + char hoststr[PJ_INET6_ADDRSTRLEN]; + pj_sockaddr_print(&transport->state->host, hoststr, sizeof(hoststr), 0); + ast_debug(1, "Transport: %s bound to host: %s, using this for media.\n", session->endpoint->transport, hoststr); + ast_sockaddr_parse(media_address, hoststr, 0); + } } if (!(session_media->rtp = ast_rtp_instance_new(session->endpoint->media.rtp.engine, sched, media_address, NULL))) {