From 94fe7a3a2cd9bf2347158e7d0e8c35e151539393 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Fri, 31 Aug 2018 03:15:23 +0000 Subject: [PATCH] Fix #2144: Updated PJSUA media update to work on call->media directly (previously on call->media_prov). Note that at this point (i.e: after SDP nego), PJSUA won't revert media state (back to before SDP nego) on any media update failure. git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@5871 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsua-lib/pjsua_media.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index d7ed573f0..b82dc2988 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -3045,9 +3045,14 @@ pj_status_t pjsua_media_channel_update(pjsua_call_id call_id, } } + /* Update call media from provisional media */ + call->med_cnt = call->med_prov_cnt; + pj_memcpy(call->media, call->media_prov, + sizeof(call->media_prov[0]) * call->med_prov_cnt); + /* Process each media stream */ - for (mi=0; mi < call->med_prov_cnt; ++mi) { - pjsua_call_media *call_med = &call->media_prov[mi]; + for (mi=0; mi < call->med_cnt; ++mi) { + pjsua_call_media *call_med = &call->media[mi]; pj_bool_t media_changed = PJ_FALSE; if (mi >= local_sdp->media_count || @@ -3438,10 +3443,10 @@ on_check_med_status: } } - /* Update call media from provisional media */ - call->med_cnt = call->med_prov_cnt; - pj_memcpy(call->media, call->media_prov, - sizeof(call->media_prov[0]) * call->med_prov_cnt); + /* Sync provisional media to call media */ + call->med_prov_cnt = call->med_cnt; + pj_memcpy(call->media_prov, call->media, + sizeof(call->media[0]) * call->med_cnt); /* Perform SDP re-negotiation. */ if (got_media && need_renego_sdp) {