diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-04-02 19:51:21 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-04-02 19:51:21 +0000 |
commit | 7e0fee875ce0f5eaaba5e67e84539ebf6bf79a6f (patch) | |
tree | 822e34473a37cfcfbd08c24ce162db13f446287c | |
parent | cf789409426f2368ab84cf59f8b33168d402ec0c (diff) |
When STUN is used with ICE, SDP media line should show the public IP address
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1134 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjsip/include/pjsua-lib/pjsua_internal.h | 1 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_call.c | 6 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_core.c | 6 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 16 |
4 files changed, 19 insertions, 10 deletions
diff --git a/pjsip/include/pjsua-lib/pjsua_internal.h b/pjsip/include/pjsua-lib/pjsua_internal.h index 0e391a0d..fae345e1 100644 --- a/pjsip/include/pjsua-lib/pjsua_internal.h +++ b/pjsip/include/pjsua-lib/pjsua_internal.h @@ -49,7 +49,6 @@ typedef struct pjsua_call int conf_slot; /**< Slot # in conference bridge. */ pjsip_evsub *xfer_sub; /**< Xfer server subscription, if this call was triggered by xfer. */ - pjmedia_sock_info skinfo; /**< Preallocated media sockets. */ pjmedia_transport *med_tp; /**< Media transport. */ pj_timer_entry refresh_tm;/**< Timer to send re-INVITE. */ pj_timer_entry hangup_tm; /**< Timer to hangup call. */ diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index 0ad1d4cf..c86a7560 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -2173,11 +2173,15 @@ static pj_status_t create_inactive_sdp(pjsua_call *call, pj_status_t status; pjmedia_sdp_conn *conn; pjmedia_sdp_attr *attr; + pjmedia_sock_info skinfo; pjmedia_sdp_session *sdp; + /* Get media socket info */ + pjmedia_transport_get_info(call->med_tp, &skinfo); + /* Create new offer */ status = pjmedia_endpt_create_sdp(pjsua_var.med_endpt, pjsua_var.pool, 1, - &call->skinfo, &sdp); + &skinfo, &sdp); if (status != PJ_SUCCESS) { pjsua_perror(THIS_FILE, "Unable to create local SDP", status); return status; diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index a002600b..477f5ce9 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -141,6 +141,7 @@ static pj_bool_t options_on_rx_request(pjsip_rx_data *rdata) { pjsip_tx_data *tdata; pjsip_response_addr res_addr; + pjmedia_sock_info skinfo; pjmedia_sdp_session *sdp; const pjsip_hdr *cap_hdr; pj_status_t status; @@ -195,9 +196,12 @@ static pj_bool_t options_on_rx_request(pjsip_rx_data *rdata) pjsip_msg_add_hdr(tdata->msg, h); } + /* Get media socket info */ + pjmedia_transport_get_info(pjsua_var.calls[0].med_tp, &skinfo); + /* Add SDP body, using call0's RTP address */ status = pjmedia_endpt_create_sdp(pjsua_var.med_endpt, tdata->pool, 1, - &pjsua_var.calls[0].skinfo, &sdp); + &skinfo, &sdp); if (status == PJ_SUCCESS) { pjsip_create_sdp_body(tdata->pool, sdp, &tdata->msg->body); } diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 8b4c1aa6..e4f6ec14 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -505,19 +505,20 @@ pj_status_t pjsua_media_subsys_destroy(void) static pj_status_t create_udp_media_transports(pjsua_transport_config *cfg) { unsigned i; + pjmedia_sock_info skinfo; pj_status_t status; /* Create each media transport */ for (i=0; i<pjsua_var.ua_cfg.max_calls; ++i) { - status = create_rtp_rtcp_sock(cfg, &pjsua_var.calls[i].skinfo); + status = create_rtp_rtcp_sock(cfg, &skinfo); if (status != PJ_SUCCESS) { pjsua_perror(THIS_FILE, "Unable to create RTP/RTCP socket", status); goto on_error; } status = pjmedia_transport_udp_attach(pjsua_var.med_endpt, NULL, - &pjsua_var.calls[i].skinfo, 0, + &skinfo, 0, &pjsua_var.calls[i].med_tp); if (status != PJ_SUCCESS) { pjsua_perror(THIS_FILE, "Unable to create media transport", @@ -605,10 +606,6 @@ static pj_status_t create_ice_media_transports(pjsua_transport_config *cfg) goto on_error; } - /* Get transport info */ - pjmedia_transport_get_info(pjsua_var.calls[i].med_tp, - &pjsua_var.calls[i].skinfo); - } return PJ_SUCCESS; @@ -694,11 +691,16 @@ pj_status_t pjsua_media_channel_create_sdp(pjsua_call_id call_id, pjmedia_sdp_session **p_sdp) { pjmedia_sdp_session *sdp; + pjmedia_sock_info skinfo; pjsua_call *call = &pjsua_var.calls[call_id]; pj_status_t status; + /* Get media socket info */ + pjmedia_transport_get_info(call->med_tp, &skinfo); + + /* Create SDP */ status = pjmedia_endpt_create_sdp(pjsua_var.med_endpt, pool, 1, - &call->skinfo, &sdp); + &skinfo, &sdp); if (status != PJ_SUCCESS) goto on_error; |