summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2013-07-10 04:43:52 +0000
committerLiong Sauw Ming <ming@teluu.com>2013-07-10 04:43:52 +0000
commitcd3db394c32bd2383d65482566071c9885eaebcc (patch)
treea3c5121841f707fc7eab7bcabbd790cf18e482a5 /pjsip
parent749bed5a7d59953dcce70a211942a239f5199525 (diff)
Re #1687: Add SDP negotiation flags in invite session
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4556 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/include/pjsip-ua/sip_inv.h1
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c28
2 files changed, 16 insertions, 13 deletions
diff --git a/pjsip/include/pjsip-ua/sip_inv.h b/pjsip/include/pjsip-ua/sip_inv.h
index f3bceb28..3017b8ce 100644
--- a/pjsip/include/pjsip-ua/sip_inv.h
+++ b/pjsip/include/pjsip-ua/sip_inv.h
@@ -372,6 +372,7 @@ struct pjsip_inv_session
pjsip_role_e role; /**< Invite role. */
unsigned options; /**< Options in use. */
pjmedia_sdp_neg *neg; /**< Negotiator. */
+ unsigned sdp_neg_flags; /**< SDP neg flags. */
pjsip_transaction *invite_tsx; /**< 1st invite tsx. */
pjsip_tx_data *invite_req; /**< Saved invite req */
pjsip_tx_data *last_answer; /**< Last INVITE resp. */
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index c457f02e..4f490f92 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -1768,9 +1768,10 @@ static pj_status_t inv_check_sdp_in_incoming_msg( pjsip_inv_session *inv,
tsx->last_tx->msg->body->data;
/* Feed the original offer to negotiator */
- status = pjmedia_sdp_neg_modify_local_offer(inv->pool_prov,
- inv->neg,
- reoffer_sdp);
+ status = pjmedia_sdp_neg_modify_local_offer2(inv->pool_prov,
+ inv->neg,
+ inv->sdp_neg_flags,
+ reoffer_sdp);
if (status != PJ_SUCCESS) {
PJ_LOG(1,(inv->obj_name, "Error updating local offer for "
"forked 2xx/183 response (err=%d)", status));
@@ -2130,8 +2131,9 @@ PJ_DEF(pj_status_t) pjsip_inv_set_local_sdp(pjsip_inv_session *inv,
{
status = pjsip_inv_set_sdp_answer(inv, sdp);
} else if (neg_state == PJMEDIA_SDP_NEG_STATE_DONE) {
- status = pjmedia_sdp_neg_modify_local_offer(inv->pool,
- inv->neg, sdp);
+ status = pjmedia_sdp_neg_modify_local_offer2(inv->pool, inv->neg,
+ inv->sdp_neg_flags,
+ sdp);
} else
return PJMEDIA_SDPNEG_EINSTATE;
} else {
@@ -2598,9 +2600,9 @@ PJ_DEF(pj_status_t) pjsip_inv_reinvite( pjsip_inv_session *inv,
break;
case PJMEDIA_SDP_NEG_STATE_DONE:
- status = pjmedia_sdp_neg_modify_local_offer(inv->pool_prov,
- inv->neg,
- new_offer);
+ status = pjmedia_sdp_neg_modify_local_offer2(
+ inv->pool_prov, inv->neg,
+ inv->sdp_neg_flags, new_offer);
if (status != PJ_SUCCESS)
goto on_return;
break;
@@ -2660,8 +2662,8 @@ PJ_DEF(pj_status_t) pjsip_inv_update ( pjsip_inv_session *inv,
/* Notify negotiator about the new offer. This will fix the offer
* with correct SDP origin.
*/
- status = pjmedia_sdp_neg_modify_local_offer(inv->pool_prov, inv->neg,
- offer);
+ status = pjmedia_sdp_neg_modify_local_offer2(inv->pool_prov, inv->neg,
+ inv->sdp_neg_flags, offer);
if (status != PJ_SUCCESS)
goto on_error;
@@ -4358,9 +4360,9 @@ static void inv_on_state_confirmed( pjsip_inv_session *inv, pjsip_event *e)
* fix the offer with correct SDP origin.
*/
status =
- pjmedia_sdp_neg_modify_local_offer(inv->pool_prov,
- inv->neg,
- sdp);
+ pjmedia_sdp_neg_modify_local_offer2(
+ inv->pool_prov, inv->neg,
+ inv->sdp_neg_flags, sdp);
/* Retrieve the "fixed" offer from negotiator */
if (status==PJ_SUCCESS) {