jsip
  1. jsip
  2. JSIP-377

forked 200 responses with no dialog are not passed up to the application

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None

      Description

      It happens that a proxy receives 200 responses from a downstream proxy that forked but only 200 response from a given fork is passed.

      It seems that there is a race condition where a 200 response is moving the TX to TERMINATED state and while it is being removed the other 200 fork response arrives and is parsed by the stack but not passed to the application layer.

      See http://code.google.com/p/mobicents/issues/detail?id=2390

        Activity

        Hide
        deruelle_jean added a comment -

        From RFC 3261, 17.1.1.2 :
        "The client transaction MUST be destroyed the instant it enters the
        "Terminated" state. This is actually necessary to guarantee correct
        operation. The reason is that 2xx responses to an INVITE are treated
        differently; each one is forwarded by proxies, and the ACK handling
        in a UAC is different"

        In this particular case, the 200 fork response succeeded to get the ref to the transaction even though it is in TERMINATED state and is not passed up to the application

        Show
        deruelle_jean added a comment - From RFC 3261, 17.1.1.2 : "The client transaction MUST be destroyed the instant it enters the "Terminated" state. This is actually necessary to guarantee correct operation. The reason is that 2xx responses to an INVITE are treated differently; each one is forwarded by proxies, and the ACK handling in a UAC is different" In this particular case, the 200 fork response succeeded to get the ref to the transaction even though it is in TERMINATED state and is not passed up to the application
        Hide
        deruelle_jean added a comment -

        Attaching patch for review, ant cc-buildloop (TCK + testsuite) is green locally and the patch was verified by the user on http://code.google.com/p/mobicents/issues/detail?id=2390.

        It let the response pass up to the application if the tx is TERMINATED

        Show
        deruelle_jean added a comment - Attaching patch for review, ant cc-buildloop (TCK + testsuite) is green locally and the patch was verified by the user on http://code.google.com/p/mobicents/issues/detail?id=2390 . It let the response pass up to the application if the tx is TERMINATED
        Hide
        mranga added a comment -

        The patch looks good.
        Please commit it. Thanks.

        Show
        mranga added a comment - The patch looks good. Please commit it. Thanks.
        Hide
        deruelle_jean added a comment -

        Committed patch in r1911. Letting open to commit the test case that should go with it

        Show
        deruelle_jean added a comment - Committed patch in r1911. Letting open to commit the test case that should go with it
        Hide
        deruelle_jean added a comment -

        This caused a regression actually see http://code.google.com/p/mobicents/issues/detail?id=2616, so we should only pass up 2xx for proxies as mentioned in the RFC section copied above.

        revision 1944 fixes this.

        Show
        deruelle_jean added a comment - This caused a regression actually see http://code.google.com/p/mobicents/issues/detail?id=2616 , so we should only pass up 2xx for proxies as mentioned in the RFC section copied above. revision 1944 fixes this.

          People

          • Assignee:
            Unassigned
            Reporter:
            deruelle_jean
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated: