summaryrefslogtreecommitdiff
path: root/pjmedia/src/pjmedia/sdp_neg.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjmedia/src/pjmedia/sdp_neg.c')
-rw-r--r--pjmedia/src/pjmedia/sdp_neg.c14
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;
}