Subject: [Sip] A question about matching rules of response to Client transaction

From: "wangshan" <[email-masked]>
Date: Tue, 27 Aug 2002 22:26:11 +0800

Hello,All

     I am a freshman of SIP, When I read the RFC3261, I have a question about the section "17.1.3 Matching Responses to Client Transactions".
this section said:

************************************************************
        1.   If the response has the same value of the branch parameter
             in the top Via header field as the branch parameter in the
             top Via header field of the request that created the
             transaction.

        2.   If the method parameter in the CSeq header field matches
             the method of the request that created the transaction. The
             method is needed since a CANCEL request constitutes a
             different transaction, but shares the same value of the
             branch parameter.

   A response that matches a transaction matched by a previous response
   is considered a retransmission of that response.
************************************************************

so consider the following situation

                 UA                      PROXY(FORK)         UA1         UA2

                      --F1-INVITE---->         ---F2-INVITE-->
                                               ------F3----------INVITE---->

                                               <-F4-18X(UA1)----
                                               <-F5------------18X(UA2)---- 
          
                      <-F6-18X(UA1)----
                      <-F7-18X(UA2)---- 
      
    UA1 and UA2 both send 18x, F4 & F5, Proxy should forward all provisional response back, so F6 & F7 are transmission to UA,but both message(F6 & F7) have the same Via header ,so have the same branch ID, given UA received F6 first,as per the matching rules metioned above, F7 will be considered as a retransmission of F6. Is this situation right?
    more, if F6 is unreliable response, but F7 is reliable reponse which need a PRACK, how to do?

    If my understanding is wrong, please tell me. thanks ahead.