diff options
Diffstat (limited to 'pjsip/src')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 6f9ae173..8fe57a11 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -1942,15 +1942,21 @@ pj_status_t pjsua_media_channel_create_sdp(pjsua_call_id call_id, m->desc.fmt[0] = pj_str("31"); break; default: - if (rem_sdp) { - pj_strdup(pool, &m->desc.media, - &rem_sdp->media[mi]->desc.media); - pj_strdup(pool, &m->desc.fmt[0], - &rem_sdp->media[mi]->desc.fmt[0]); - } else { - pj_assert(!"Invalid call_med media type"); - return PJ_EBUG; + /* This must be us generating re-offer, and some unknown + * media may exist, so just clone from active local SDP + * (and it should have been deactivated already). + */ + pj_assert(call->inv && call->inv->neg && + sdp_neg_state == PJMEDIA_SDP_NEG_STATE_DONE); + { + 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; } + break; } } |