| --- a/pjmedia/src/pjmedia/sdp_neg.c |
| +++ b/pjmedia/src/pjmedia/sdp_neg.c |
| @@ -906,7 +906,7 @@ static pj_status_t process_m_answer( pj_ |
| * after receiving remote answer. |
| */ |
| static pj_status_t process_answer(pj_pool_t *pool, |
| - pjmedia_sdp_session *offer, |
| + pjmedia_sdp_session *local_offer, |
| pjmedia_sdp_session *answer, |
| pj_bool_t allow_asym, |
| pjmedia_sdp_session **p_active) |
| @@ -914,10 +914,14 @@ static pj_status_t process_answer(pj_poo |
| unsigned omi = 0; /* Offer media index */ |
| unsigned ami = 0; /* Answer media index */ |
| pj_bool_t has_active = PJ_FALSE; |
| + pjmedia_sdp_session *offer; |
| pj_status_t status; |
| |
| /* Check arguments. */ |
| - PJ_ASSERT_RETURN(pool && offer && answer && p_active, PJ_EINVAL); |
| + PJ_ASSERT_RETURN(pool && local_offer && answer && p_active, PJ_EINVAL); |
| + |
| + /* Duplicate local offer SDP. */ |
| + offer = pjmedia_sdp_session_clone(pool, local_offer); |
| |
| /* Check that media count match between offer and answer */ |
| // Ticket #527, different media count is allowed for more interoperability, |