summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-04-02 19:27:54 +0000
committerBenny Prijono <bennylp@teluu.com>2007-04-02 19:27:54 +0000
commitcf789409426f2368ab84cf59f8b33168d402ec0c (patch)
treeba6be5cdd8f8062a32c3a6f4af1ae6ebdfd284b9 /pjsip
parent8a7b64c3c0c37371d8d84dbd505d0695ca18d73e (diff)
Fixed hold/re-INVITE bug when ICE is used
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1133 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c18
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c6
2 files changed, 23 insertions, 1 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index 1494276e..0ad1d4cf 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -1218,6 +1218,14 @@ PJ_DEF(pj_status_t) pjsua_call_reinvite( pjsua_call_id call_id,
return PJSIP_ESESSIONSTATE;
}
+ /* Init media channel */
+ status = pjsua_media_channel_init(call->index, PJSIP_ROLE_UAC);
+ if (status != PJ_SUCCESS) {
+ pjsua_perror(THIS_FILE, "Error initializing media channel", status);
+ pjsip_dlg_dec_lock(dlg);
+ return PJSIP_ESESSIONSTATE;
+ }
+
/* Create SDP */
PJ_UNUSED_ARG(unhold);
PJ_TODO(create_active_inactive_sdp_based_on_unhold_arg);
@@ -2245,8 +2253,18 @@ static void pjsua_call_on_rx_offer(pjsip_inv_session *inv,
"(media in offer is %s)", call->index, remote_state));
status = create_inactive_sdp( call, &answer );
} else {
+
PJ_LOG(4,(THIS_FILE, "Call %d: received updated media offer",
call->index));
+
+ /* Init media channel */
+ status = pjsua_media_channel_init(call->index, PJSIP_ROLE_UAC);
+ if (status != PJ_SUCCESS) {
+ pjsua_perror(THIS_FILE, "Error initializing media channel", status);
+ PJSUA_UNLOCK();
+ return;
+ }
+
status = pjsua_media_channel_create_sdp(call->index, call->inv->pool, &answer);
}
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 0d4f6b2a..8b4c1aa6 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -814,7 +814,11 @@ pj_status_t pjsua_media_channel_update(pjsua_call_id call_id,
call->media_dir = PJMEDIA_DIR_NONE;
- /* Shutdown transport */
+ /* Shutdown ICE session */
+ if (pjsua_var.media_cfg.enable_ice) {
+ pjmedia_ice_stop_ice(call->med_tp);
+ }
+
/* No need because we need keepalive? */
} else {