[commit] r8333 - in freeswitch/trunk/libs/sofia-sip: . libsofia-sip-ua/nua
Author: mikej Date: Fri May 9 13:43:16 2008 New Revision: 8333 Modified: freeswitch/trunk/libs/sofia-sip/.update freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c Log: Wed May 7 10:04:14 EDT 2008 Pekka Pessi <first.last@nokia.com> * nua_session.c: do not terminate session without soa if SDP O/A seems to fail SDP O/A may be buried inside MIME multipart Modified: freeswitch/trunk/libs/sofia-sip/.update ============================================================================== --- freeswitch/trunk/libs/sofia-sip/.update (original) +++ freeswitch/trunk/libs/sofia-sip/.update Fri May 9 13:43:16 2008 @@ -1 +1 @@ -Fri May 9 13:42:29 EDT 2008 +Fri May 9 13:43:01 EDT 2008 Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c ============================================================================== --- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c (original) +++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c Fri May 9 13:43:16 2008 @@ -1293,7 +1293,9 @@ /* signal SOA that O/A round(s) is (are) complete */ soa_activate(nh->nh_soa, NULL); } - else if (nh->nh_soa == NULL && !(cr->cr_offer_sent && !cr->cr_answer_recv)) { + else if (nh->nh_soa == NULL + /* NUA does not necessarily know dirty details */ + /* && !(cr->cr_offer_sent && !cr->cr_answer_recv) */) { ; } else { @@ -3135,17 +3137,15 @@ (sr->sr_offer_recv && !sr->sr_answer_sent)) break; - if (sr || - (cri && cri->cr_offer_sent && !cri->cr_answer_recv) || - (cri && cri->cr_offer_recv && !cri->cr_answer_sent)) { - if (nh->nh_soa == NULL) { - if (session_get_description(sip, NULL, NULL)) - return nua_client_return(cr, 500, "Overlapping Offer/Answer", msg); - } - } - else if (nh->nh_soa == NULL) { + if (nh->nh_soa == NULL) { offer_sent = session_get_description(sip, NULL, NULL); } + else if (sr || + (cri && cri->cr_offer_sent && !cri->cr_answer_recv) || + (cri && cri->cr_offer_recv && !cri->cr_answer_sent)) { + if (session_get_description(sip, NULL, NULL)) + return nua_client_return(cr, 500, "Overlapping Offer/Answer", msg); + } else if (!sip->sip_payload) { soa_init_offer_answer(nh->nh_soa); @@ -3360,7 +3360,7 @@ if ((overlap = sr0->sr_offer_recv && !sr0->sr_answer_sent)) break; - if (overlap) + if (nh->nh_soa && overlap) return nua_server_retry_after(sr, 500, "Overlapping Offer/Answer", 1, 9); if (nh->nh_soa &&
participants (1)
-
Freeswitch SVN