Hi, using Sofia 1.12.11

We have the following flow


UAC             UAS
------------------>
     INVITE 
<------------------
     183 rel
------------------->
    PRACK
<-------------------
    200OK

<-------------------
     200 OK (different To tag to 183 above)

------------------->
     ACK
------------------->
     BYE


On the 200 OK to the Invite, if it has different To tag to the 183 
Sofia thinks its orphan 200 final response and discards. This is the code
that causes this. This only happens when PRACK is involved. If the INVITE is 
sent without support for 100 rel all is ok


if (orq->orq_destroyed && 200 <= status && status < 300) {
      if (orq->orq_uas && su_strcasecmp(sip->sip_to->a_tag, orq->orq_tag) != 0) 
{
        /* Orphan 200 Ok to INVITE. ACK and BYE it */
        SU_DEBUG_5(("nta: Orphan 200 Ok send ACK&BYE\n"));
        return nta_msg_ackbye(sa, msg);
      }
      return -1;  /* Proxy statelessly (RFC3261 section 16.11) */
    }


It looks like the orq_destroyed bit is set which is causing this. Is the fork 
of the 200OK not regarded as existing INVITE transaction. Any pointers 
to help solve this most appreciated.

Thanks

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel

Reply via email to