2009/1/11 liu yang <yangliu....@gmail.com>:
> I have a special scenario which could be described by following sequence
> diagram.
> Brief explanation is to delay SDP in ACK for reinvite session update.
>
>  /* we hack here to get through following reinvite scenario */
>     /*
>      *    A                                                     B
>      *    |<--session active (call_state_ready)-->|
>      *    |-------reInvite ( w/o SDP )----------->|
>      *    |-------200OK ( w/ SDP )--------------->|
>      *    |<-------ACK( w/SDP )------------------>|
>      *
>      *    Current prevents SDP answer being attached with ACK to reInvite
> 200OK.
>      *    Because as you can see, our call already stay in active state,
> subsequent
>      *    SOA action won't be executed in this case.
>      *    This is a typical scenario for call bridging.
>      */
>
> I am using 1.12.9. Delving into the code, I figured out related lines. See
> below.
>
>  if (ss == NULL || ss->ss_state > =nua_callstate_ready)
>       ;
>     else if (cr->cr_offer_recv && !cr->cr_answer_sent) {
>       if (nh->nh_soa == NULL) {
>     if (session_get_description(sip, NULL, NULL))
>       cr->cr_answer_sent = 1, ss->ss_oa_sent = Answer;
>       }
>
> The logic is , in  function nua_invite_client_ack(), session state is
> inspected to check whether soa offer/answer
> should be performed. Original code is,
>  if (ss == NULL || ss->ss_state >= nua_callstate_ready);
>
> We can see, above code means, for active call, if we want to update session
> capability in outgoing ACK as an SDP answer, we will get ACK without SDP.
>
> My suggestion is to make this 'if' statement more open (
> ss_state>nua_callstate_eady). I verified this proposal, it worked as
> expected.
> Actually this is a typical call flow of consultant call transfer ( briging
> ).
>
> What's your guys' comment? Does such tiny tweak bring in other unexpected
> impact which is beyond my understanding?

This looks like a bug, the intention is to avoid sending answer in ACK
and signaling error if the o/a is incomplete when call is already
being terminated. Thanks for catching this.

-- 
Pekka.Pessi mail at nokia.com

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel

Reply via email to