From 85f8babfe9b362e0ba948980ca1ca51c0e2458a4 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Thu, 2 Dec 2010 10:08:59 +0000 Subject: 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 --- pjsip/src/pjsip-ua/sip_inv.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'pjsip/src/pjsip-ua') 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); -- cgit v1.2.3