summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index e7eb1c58..5633e61f 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -1489,8 +1489,12 @@ static pj_status_t inv_negotiate_sdp( pjsip_inv_session *inv )
if (mod_inv.cb.on_media_update && inv->notify)
(*mod_inv.cb.on_media_update)(inv, status);
- /* Swap the flip-flop pool, and reset the new provisional pool */
- swap_pool(&inv->pool_prov, &inv->pool_active);
+ /* Swap the flip-flop pool when SDP negotiation success. */
+ if (status == PJ_SUCCESS) {
+ swap_pool(&inv->pool_prov, &inv->pool_active);
+ }
+
+ /* Reset the provisional pool regardless SDP negotiation result. */
pj_pool_reset(inv->pool_prov);
return status;