diff options
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_media.c')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index ab4c4bde..4beb821c 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -1304,6 +1304,20 @@ on_return: return status; } +/* Determine if call's media is being changed, for example when video is being + * added. Then we can reject incoming re-INVITE, for example. This is the + * solution for https://trac.pjsip.org/repos/ticket/1738 + */ +pj_bool_t pjsua_call_media_is_changing(pjsua_call *call) +{ + /* The problem in #1738 occurs because we do handle_events() loop while + * adding media, which could cause incoming re-INVITE to be processed and + * cause havoc. Since the handle_events() loop only happens while adding + * media, it is sufficient to only check if "prov > cnt" for now. + */ + return call->med_prov_cnt > call->med_cnt; +} + /* Initialize the media line */ pj_status_t pjsua_call_media_init(pjsua_call_media *call_med, pjmedia_type type, |