diff options
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 8bca8700..43b70baa 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -2311,9 +2311,18 @@ pj_status_t pjsua_media_channel_create_sdp(pjsua_call_id call_id, const pjmedia_sdp_session *s_; pjmedia_sdp_neg_get_active_local(call->inv->neg, &s_); - pj_assert(mi < s_->media_count); - m = pjmedia_sdp_media_clone(pool, s_->media[mi]); - m->desc.port = 0; + if (mi < s_->media_count) { + m = pjmedia_sdp_media_clone(pool, s_->media[mi]); + m->desc.port = 0; + } else { + /* Remote may have removed some media lines in + * previous negotiations. However, since our + * media count may never decrease (as per + * the RFC), we'll just offer unknown media here. + */ + m->desc.media = pj_str("unknown"); + m->desc.fmt[0] = pj_str("0"); + } } break; } |