1 diff --git a/pjmedia/src/pjmedia/sdp_neg.c b/pjmedia/src/pjmedia/sdp_neg.c
2 index 3b85b4273..a14009662 100644
3 --- a/pjmedia/src/pjmedia/sdp_neg.c
4 +++ b/pjmedia/src/pjmedia/sdp_neg.c
5 @@ -304,7 +304,6 @@ PJ_DEF(pj_status_t) pjmedia_sdp_neg_modify_local_offer2(
7 pjmedia_sdp_session *new_offer;
8 pjmedia_sdp_session *old_offer;
9 - char media_used[PJMEDIA_MAX_SDP_MEDIA];
10 unsigned oi; /* old offer media index */
13 @@ -323,8 +322,19 @@ PJ_DEF(pj_status_t) pjmedia_sdp_neg_modify_local_offer2(
14 /* Change state to STATE_LOCAL_OFFER */
15 neg->state = PJMEDIA_SDP_NEG_STATE_LOCAL_OFFER;
17 + /* When there is no active local SDP in state PJMEDIA_SDP_NEG_STATE_DONE,
18 + * it means that the previous initial SDP nego must have been failed,
19 + * so we'll just set the local SDP offer here.
21 + if (!neg->active_local_sdp) {
22 + neg->initial_sdp_tmp = NULL;
23 + neg->initial_sdp = pjmedia_sdp_session_clone(pool, local);
24 + neg->neg_local_sdp = pjmedia_sdp_session_clone(pool, local);
30 - pj_bzero(media_used, sizeof(media_used));
31 old_offer = neg->active_local_sdp;
32 new_offer = pjmedia_sdp_session_clone(pool, local);