summaryrefslogtreecommitdiff
path: root/pjsip/src
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-04-02 19:51:21 +0000
committerBenny Prijono <bennylp@teluu.com>2007-04-02 19:51:21 +0000
commit7e0fee875ce0f5eaaba5e67e84539ebf6bf79a6f (patch)
tree822e34473a37cfcfbd08c24ce162db13f446287c /pjsip/src
parentcf789409426f2368ab84cf59f8b33168d402ec0c (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
Diffstat (limited to 'pjsip/src')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c6
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c6
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c16
3 files changed, 19 insertions, 9 deletions
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;