diff options
author | Benny Prijono <bennylp@teluu.com> | 2013-04-24 09:52:25 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2013-04-24 09:52:25 +0000 |
commit | 6058aa59435610df09202973440ba02af14ca8df (patch) | |
tree | 7a489b1c03314dad4bfab747675405c8672918c5 | |
parent | 8144889895f7a8772fe75d664bff91390685a2d3 (diff) |
Fixed #1659: SDP offer version number is not incremented if previous re-INVITE offer was rejected
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4498 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjmedia/src/pjmedia/sdp_neg.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/pjmedia/src/pjmedia/sdp_neg.c b/pjmedia/src/pjmedia/sdp_neg.c index 217bd176..8162fef5 100644 --- a/pjmedia/src/pjmedia/sdp_neg.c +++ b/pjmedia/src/pjmedia/sdp_neg.c @@ -1349,13 +1349,21 @@ PJ_DEF(pj_status_t) pjmedia_sdp_neg_cancel_offer(pjmedia_sdp_neg *neg) neg->state == PJMEDIA_SDP_NEG_STATE_REMOTE_OFFER, PJMEDIA_SDPNEG_EINSTATE); - /* Reset state to done */ - neg->state = PJMEDIA_SDP_NEG_STATE_DONE; - /* Clear temporary SDP */ neg->neg_local_sdp = neg->neg_remote_sdp = NULL; neg->has_remote_answer = PJ_FALSE; + if (neg->state == PJMEDIA_SDP_NEG_STATE_LOCAL_OFFER) { + /* Increment next version number. This happens if for example + * the reinvite offer is rejected by 488. If we don't increment + * the version here, the next offer will have the same version. + */ + neg->active_local_sdp->origin.version++; + } + + /* Reset state to done */ + neg->state = PJMEDIA_SDP_NEG_STATE_DONE; + return PJ_SUCCESS; } |