From fc96eeb1372567d614304f915b8221c9568d4651 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Fri, 23 Dec 2016 05:40:59 +0000 Subject: Fixed #1987: Verify 'med_prov_cnt' after media reinitialization (with a new call setting) to make sure it is not decreased. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5510 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsua-lib/pjsua_media.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 68d466ff..641e2b10 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -2040,6 +2040,17 @@ pj_status_t pjsua_media_channel_init(pjsua_call_id call_id, } #endif } + + /* In case of media reinit, 'med_prov_cnt' may be decreased + * because the new call->opt says so. As media count should + * never decrease, we should verify 'med_prov_cnt' to be + * at least equal to 'med_cnt' (see also #1987). + */ + if (reinit && (call->opt.flag & PJSUA_CALL_REINIT_MEDIA) && + call->med_prov_cnt < call->med_cnt) + { + call->med_prov_cnt = call->med_cnt; + } } call->rem_offerer = PJ_FALSE; -- cgit v1.2.3