Hi, it's my first question in this mailist.

I'd like to know how RFC 3261 handles this escenary:

- A UAC send INVITE to proxy (OpenSer).
- Proxy does parallel forking to various location.
- Proxy receives various 180 and pass them to UAC.
- In this moment UAC knows various To_tag's (for example "aaa" and "bbb").
- UAC sends a CANCEL to proxy. This CANCEL has not (and doesn't need) a 
To_tag.
- Proxy (stateful proxy) must reply with "200 cancelling" and send a CANCEL to 
every branches. [1]
- In this "200 cancelling" sent to UAC the To_tag SHOULD be the same as in the 
response to the original request of the UAC. [2]

So, how can it be possible? which To_tag SHOULD contain the "200 
cancelling"? "aaa" or "bbb"? they are various previous responses with 
To_tag !!

In fact, in this case OpenSer replies a "200 cancelling" with a NEW To_tag 
(different of "aaa" or "bbb" that were received in 180 replies).

RFC 3261 in "16.10 CANCEL Processing" doesn't explain how to handle it [3].

How can it be explained according to RFC 3261?


In fact, I've problem with Asterisk in mode "pedantic=yes" (matching To and 
>From tags) when sending a CANCEL to an OpenSer that does parallel forking. 
Asterisk doesn't recognize the "200 canceling" because the To_tag is 
different of the previously received To_tag in 180 response, so Asterisk 
remains the channel open.



Thanks a lot for any explanation.




[1]
--------------------------------------------------------------------------------------------------------------
 9 Canceling a Request
   ...
   A stateful proxy responds to a CANCEL, rather than simply forwarding
   a response it would receive from a downstream element.  For that
   reason, CANCEL is referred to as a "hop-by-hop" request, since it is
   responded to at each stateful proxy hop.
   ...
--------------------------------------------------------------------------------------------------------------


[2]
--------------------------------------------------------------------------------------------------------------
 9.2 Server Behavior
   ...
   The processing of a CANCEL request at a server depends on the type of
   server.  A stateless proxy will forward it, a stateful proxy might
   respond to it and generate some CANCEL requests of its own, and a UAS
   will respond to it.  See Section 16.10 for proxy treatment of CANCEL.
   ...
   the UAS answers the CANCEL
   request itself with a 200 (OK) response.  This response is
   constructed following the procedures described in Section 8.2.6
   noting that the To tag of the response to the CANCEL and the To tag
   in the response to the original request SHOULD be the same.
--------------------------------------------------------------------------------------------------------------


[3]
--------------------------------------------------------------------------------------------------------------
 16.10 CANCEL Processing
   ...
   While a CANCEL request is handled in a stateful proxy by its own
   server transaction, a new response context is not created for it.
   Instead, the proxy layer searches its existing response contexts for
   the server transaction handling the request associated with this
   CANCEL.  If a matching response context is found, the element MUST
   immediately return a 200 (OK) response to the CANCEL request.  In
   this case, the element is acting as a user agent server as defined in
   Section 8.2.  Furthermore, the element MUST generate CANCEL requests
   for all pending client transactions in the context as described in
   Section 16.7 step 10.
   ...
--------------------------------------------------------------------------------------------------------------



-- 
Iñaki Baz Castillo
[EMAIL PROTECTED]

_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to