diff options
author | Benny Prijono <bennylp@teluu.com> | 2012-03-06 07:18:23 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2012-03-06 07:18:23 +0000 |
commit | 064ca97fad7f636f404d3b1e031fbb7d61b8853c (patch) | |
tree | 3d13af23a5436e4446160862c92c704c0b95d906 | |
parent | fdfd36eb768c2402345b260b861e70bd57447abb (diff) |
Fixed #1460: Allow call to transition to CONFIRMED state even when SDP negotiation is pending if the pending negotiation is an updated offer and not the original one with the INVITE transaction
git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.x@3964 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjsip/src/pjsip-ua/sip_inv.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c index 66f9c63a..dc3ffb22 100644 --- a/pjsip/src/pjsip-ua/sip_inv.c +++ b/pjsip/src/pjsip-ua/sip_inv.c @@ -212,7 +212,16 @@ void inv_set_state(pjsip_inv_session *inv, pjsip_inv_state state, * otherwise disconnect the session. */ if (state == PJSIP_INV_STATE_CONFIRMED) { - if (pjmedia_sdp_neg_get_state(inv->neg)!=PJMEDIA_SDP_NEG_STATE_DONE) { + struct tsx_inv_data *tsx_inv_data = NULL; + + if (inv->invite_tsx) { + tsx_inv_data = (struct tsx_inv_data*) + inv->invite_tsx->mod_data[mod_inv.mod.id]; + } + + if (pjmedia_sdp_neg_get_state(inv->neg)!=PJMEDIA_SDP_NEG_STATE_DONE && + (tsx_inv_data && !tsx_inv_data->sdp_done) ) + { pjsip_tx_data *bye; PJ_LOG(4,(inv->obj_name, "SDP offer/answer incomplete, ending the " |