diff options
-rw-r--r-- | pjmedia/include/pjmedia/transport.h | 23 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/transport_ice.c | 2 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/transport_srtp.c | 6 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/transport_udp.c | 1 | ||||
-rw-r--r-- | pjsip-apps/src/samples/simpleua.c | 1 | ||||
-rw-r--r-- | pjsip-apps/src/samples/siprtp.c | 2 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_call.c | 3 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_core.c | 4 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 1 |
9 files changed, 28 insertions, 15 deletions
diff --git a/pjmedia/include/pjmedia/transport.h b/pjmedia/include/pjmedia/transport.h index fcf120da..19869a9b 100644 --- a/pjmedia/include/pjmedia/transport.h +++ b/pjmedia/include/pjmedia/transport.h @@ -405,7 +405,7 @@ struct pjmedia_transport }; /** - * This structure describes buffer storage of transport specific info. + * This structure describes storage buffer of transport specific info. * The actual transport specific info contents will be defined by transport * implementation. Note that some transport implementations do not need to * provide specific info, since the general socket info is enough. @@ -456,10 +456,23 @@ struct pjmedia_transport_info /** - * Get media socket info from the specified transport. The socket info - * contains information about the local address of this transport, and - * would be needed for example to fill in the "c=" and "m=" line of local - * SDP. + * Initialize transport info. + * + * @param info Transport info to be initialized. + */ +PJ_INLINE(void) pjmedia_transport_info_init(pjmedia_transport_info *info) +{ + pj_bzero(&info->sock_info, sizeof(pjmedia_sock_info)); + info->sock_info.rtp_sock = info->sock_info.rtcp_sock = PJ_INVALID_SOCKET; + info->specific_info_cnt = 0; +} + + +/** + * Get media transport info from the specified transport and all underlying + * transports if any. The transport also contains information about socket info + * which describes the local address of the transport, and would be needed + * for example to fill in the "c=" and "m=" line of local SDP. * * @param tp The transport. * @param info Media socket info to be initialized. diff --git a/pjmedia/src/pjmedia/transport_ice.c b/pjmedia/src/pjmedia/transport_ice.c index 0534ad4b..59408dd8 100644 --- a/pjmedia/src/pjmedia/transport_ice.c +++ b/pjmedia/src/pjmedia/transport_ice.c @@ -700,8 +700,6 @@ static pj_status_t transport_get_info(pjmedia_transport *tp, sizeof(pj_sockaddr_in)); } - info->specific_info_cnt = 0; - return PJ_SUCCESS; } diff --git a/pjmedia/src/pjmedia/transport_srtp.c b/pjmedia/src/pjmedia/transport_srtp.c index 3bd95c88..6cc3881a 100644 --- a/pjmedia/src/pjmedia/transport_srtp.c +++ b/pjmedia/src/pjmedia/transport_srtp.c @@ -564,10 +564,6 @@ static pj_status_t transport_get_info(pjmedia_transport *tp, PJ_ASSERT_RETURN(sizeof(pjmedia_srtp_info) <= PJMEDIA_TRANSPORT_SPECIFIC_INFO_MAXSIZE, PJ_ENOMEM); - status = pjmedia_transport_get_info(srtp->real_tp, info); - if (status != PJ_SUCCESS) - return status; - srtp_info.active = srtp->session_inited; srtp_info.rx_policy = srtp->rx_policy; srtp_info.tx_policy = srtp->tx_policy; @@ -578,7 +574,7 @@ static pj_status_t transport_get_info(pjmedia_transport *tp, pj_memcpy(&info->spc_info[spc_info_idx].buffer, &srtp_info, sizeof(srtp_info)); - return PJ_SUCCESS; + return pjmedia_transport_get_info(srtp->real_tp, info); } static pj_status_t transport_attach(pjmedia_transport *tp, diff --git a/pjmedia/src/pjmedia/transport_udp.c b/pjmedia/src/pjmedia/transport_udp.c index f4e12cd1..c671d0f7 100644 --- a/pjmedia/src/pjmedia/transport_udp.c +++ b/pjmedia/src/pjmedia/transport_udp.c @@ -593,7 +593,6 @@ static pj_status_t transport_get_info(pjmedia_transport *tp, info->sock_info.rtp_addr_name = udp->rtp_addr_name; info->sock_info.rtcp_sock = udp->rtcp_sock; info->sock_info.rtcp_addr_name = udp->rtcp_addr_name; - info->specific_info_cnt = 0; return PJ_SUCCESS; } diff --git a/pjsip-apps/src/samples/simpleua.c b/pjsip-apps/src/samples/simpleua.c index 634bc539..4e9d3954 100644 --- a/pjsip-apps/src/samples/simpleua.c +++ b/pjsip-apps/src/samples/simpleua.c @@ -301,6 +301,7 @@ int main(int argc, char *argv[]) * need this info to create SDP (i.e. the address and port info in * the SDP). */ + pjmedia_transport_info_init(&g_med_tpinfo); pjmedia_transport_get_info(g_med_transport, &g_med_tpinfo); diff --git a/pjsip-apps/src/samples/siprtp.c b/pjsip-apps/src/samples/siprtp.c index 53abcdee..a091d839 100644 --- a/pjsip-apps/src/samples/siprtp.c +++ b/pjsip-apps/src/samples/siprtp.c @@ -1012,7 +1012,7 @@ static pj_status_t create_sdp( pj_pool_t *pool, /* Get transport info */ - pj_bzero(&tpinfo, sizeof(tpinfo)); + pjmedia_transport_info_init(&tpinfo); pjmedia_transport_get_info(audio->transport, &tpinfo); /* Create and initialize basic SDP session */ diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index 6329732a..4035011a 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -2260,6 +2260,7 @@ PJ_DEF(pj_status_t) pjsua_call_dump( pjsua_call_id call_id, } /* Get SRTP status */ + pjmedia_transport_info_init(&tp_info); pjmedia_transport_get_info(call->med_tp, &tp_info); if (tp_info.specific_info_cnt > 0) { int i; @@ -2470,6 +2471,7 @@ static void call_disconnect( pjsip_inv_session *inv, pjmedia_sdp_session *local_sdp; pjmedia_transport_info ti; + pjmedia_transport_info_init(&ti); pjmedia_transport_get_info(call->med_tp, &ti); status = pjmedia_endpt_create_sdp(pjsua_var.med_endpt, tdata->pool, 1, &ti.sock_info, &local_sdp); @@ -2581,6 +2583,7 @@ static pj_status_t create_inactive_sdp(pjsua_call *call, pjmedia_sdp_session *sdp; /* Get media socket info */ + pjmedia_transport_info_init(&tp_info); pjmedia_transport_get_info(call->med_tp, &tp_info); /* Create new offer */ diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index ef838ba8..9bbbca7a 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -320,6 +320,7 @@ static pj_bool_t options_on_rx_request(pjsip_rx_data *rdata) } /* Get media socket info */ + pjmedia_transport_info_init(&tpinfo); pjmedia_transport_get_info(pjsua_var.calls[0].med_tp, &tpinfo); /* Add SDP body, using call0's RTP address */ @@ -2064,8 +2065,9 @@ PJ_DEF(void) pjsua_dump(pj_bool_t detail) char addr_buf[80]; /* MSVC complains about tpinfo not being initialized */ - pj_bzero(&tpinfo, sizeof(tpinfo)); + //pj_bzero(&tpinfo, sizeof(tpinfo)); + pjmedia_transport_info_init(&tpinfo); pjmedia_transport_get_info(call->med_tp, &tpinfo); PJ_LOG(3,(THIS_FILE, " %s: %s", diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 765fec0f..86f3d4f0 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -839,6 +839,7 @@ pj_status_t pjsua_media_channel_create_sdp(pjsua_call_id call_id, } /* Get media socket info */ + pjmedia_transport_info_init(&tpinfo); pjmedia_transport_get_info(call->med_tp, &tpinfo); /* Create SDP */ |