diff options
author | Riza Sulistyo <riza@teluu.com> | 2014-10-31 12:14:28 +0000 |
---|---|---|
committer | Riza Sulistyo <riza@teluu.com> | 2014-10-31 12:14:28 +0000 |
commit | 5d027102466dca0528f6ac0da87a23517f6a3f07 (patch) | |
tree | bbee25b2fafd3922f6eb4a7b0207cd1c316fa891 /pjsip | |
parent | 215516db90564f0f40675d7e8b0bdeead4866022 (diff) |
Fixed #1797: Clean up provisional media is executed when there is an ongoing SDP negotiation.
Scenario:
1. re-invite got 491, state tsx changed to completed
2. cleanup prov med executed
3. re-invite again with video
4. timer tsx to shift tsx no 1, from completed -> terminated trigger provisional cleanup
5. provisional video transport in no 3 got cleanup
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4956 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_call.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index cf72d6e5..5938ccbe 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -4693,6 +4693,7 @@ static void pjsua_call_on_tsx_state_changed(pjsip_inv_session *inv, } else if (tsx->role == PJSIP_ROLE_UAC && pjsip_method_cmp(&tsx->method, &pjsip_invite_method)==0 && tsx->state >= PJSIP_TSX_STATE_COMPLETED && + e->body.tsx_state.prev_state < PJSIP_TSX_STATE_COMPLETED && (tsx->status_code!=401 && tsx->status_code!=407)) { if (tsx->status_code/100 != 2) { @@ -4726,6 +4727,7 @@ static void pjsua_call_on_tsx_state_changed(pjsip_inv_session *inv, } else if (tsx->role == PJSIP_ROLE_UAC && pjsip_method_cmp(&tsx->method, &pjsip_update_method)==0 && tsx->state >= PJSIP_TSX_STATE_COMPLETED && + e->body.tsx_state.prev_state < PJSIP_TSX_STATE_COMPLETED && (tsx->status_code!=401 && tsx->status_code!=407)) { if (tsx->status_code/100 != 2 || |