summaryrefslogtreecommitdiff
path: root/res/res_pjsip_sdp_rtp.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/res_pjsip_sdp_rtp.c')
-rw-r--r--res/res_pjsip_sdp_rtp.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c
index 701edc3c2..7c861dac9 100644
--- a/res/res_pjsip_sdp_rtp.c
+++ b/res/res_pjsip_sdp_rtp.c
@@ -209,24 +209,30 @@ static int create_rtp(struct ast_sip_session *session, struct ast_sip_session_me
session->endpoint->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);
- if (ast_sockaddr_parse(&temp_media_address, hoststr, 0)) {
- ast_debug(1, "Transport %s bound to %s: Using it for RTP media.\n",
- session->endpoint->transport, hoststr);
- media_address = &temp_media_address;
- } else {
- ast_debug(1, "Transport %s bound to %s: Invalid for RTP media.\n",
- session->endpoint->transport, hoststr);
+ struct ast_sip_transport *transport;
+
+ transport = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "transport",
+ session->endpoint->transport);
+ if (transport) {
+ struct ast_sip_transport_state *trans_state;
+
+ trans_state = ast_sip_get_transport_state(ast_sorcery_object_get_id(transport));
+ if (trans_state) {
+ char hoststr[PJ_INET6_ADDRSTRLEN];
+
+ pj_sockaddr_print(&trans_state->host, hoststr, sizeof(hoststr), 0);
+ if (ast_sockaddr_parse(&temp_media_address, hoststr, 0)) {
+ ast_debug(1, "Transport %s bound to %s: Using it for RTP media.\n",
+ session->endpoint->transport, hoststr);
+ media_address = &temp_media_address;
+ } else {
+ ast_debug(1, "Transport %s bound to %s: Invalid for RTP media.\n",
+ session->endpoint->transport, hoststr);
+ }
+ ao2_ref(trans_state, -1);
}
+ ao2_ref(transport, -1);
}
- ao2_cleanup(transport);
}
if (!(session_media->rtp = ast_rtp_instance_new(session->endpoint->media.rtp.engine, sched, media_address, NULL))) {