diff options
author | Benny Prijono <bennylp@teluu.com> | 2010-12-02 10:08:59 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2010-12-02 10:08:59 +0000 |
commit | 85f8babfe9b362e0ba948980ca1ca51c0e2458a4 (patch) | |
tree | 5f1fa351270a608abf6d48b4dbc2ed4e9fecd334 /pjsip/src | |
parent | ab91191ef015d89ca793f34187d5560d314bd1f2 (diff) |
Fixed #1166: Detection of offer/answer glare condition with re-INVITE
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3381 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src')
-rw-r--r-- | pjsip/src/pjsip-ua/sip_inv.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c index b7130a6c..aebd3353 100644 --- a/pjsip/src/pjsip-ua/sip_inv.c +++ b/pjsip/src/pjsip-ua/sip_inv.c @@ -3942,6 +3942,22 @@ static void inv_on_state_confirmed( pjsip_inv_session *inv, pjsip_event *e) return; } + /* Send 491 if we receive re-INVITE while another offer/answer + * negotiation is in progress + */ + if (pjmedia_sdp_neg_get_state(inv->neg) != + PJMEDIA_SDP_NEG_STATE_DONE) + { + status = pjsip_dlg_create_response(inv->dlg, rdata, + PJSIP_SC_REQUEST_PENDING, + NULL, &tdata); + if (status != PJ_SUCCESS) + return; + pjsip_timer_update_resp(inv, tdata); + status = pjsip_dlg_send_response(dlg, tsx, tdata); + return; + } + /* Process SDP in incoming message. */ status = inv_check_sdp_in_incoming_msg(inv, tsx, rdata); |