b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | --- a/pjmedia/src/pjmedia/sdp_neg.c |
| 2 | +++ b/pjmedia/src/pjmedia/sdp_neg.c |
| 3 | @@ -906,7 +906,7 @@ static pj_status_t process_m_answer( pj_ |
| 4 | * after receiving remote answer. |
| 5 | */ |
| 6 | static pj_status_t process_answer(pj_pool_t *pool, |
| 7 | - pjmedia_sdp_session *offer, |
| 8 | + pjmedia_sdp_session *local_offer, |
| 9 | pjmedia_sdp_session *answer, |
| 10 | pj_bool_t allow_asym, |
| 11 | pjmedia_sdp_session **p_active) |
| 12 | @@ -914,10 +914,14 @@ static pj_status_t process_answer(pj_poo |
| 13 | unsigned omi = 0; /* Offer media index */ |
| 14 | unsigned ami = 0; /* Answer media index */ |
| 15 | pj_bool_t has_active = PJ_FALSE; |
| 16 | + pjmedia_sdp_session *offer; |
| 17 | pj_status_t status; |
| 18 | |
| 19 | /* Check arguments. */ |
| 20 | - PJ_ASSERT_RETURN(pool && offer && answer && p_active, PJ_EINVAL); |
| 21 | + PJ_ASSERT_RETURN(pool && local_offer && answer && p_active, PJ_EINVAL); |
| 22 | + |
| 23 | + /* Duplicate local offer SDP. */ |
| 24 | + offer = pjmedia_sdp_session_clone(pool, local_offer); |
| 25 | |
| 26 | /* Check that media count match between offer and answer */ |
| 27 | // Ticket #527, different media count is allowed for more interoperability, |