[prev in list] [next in list] [prev in thread] [next in thread]
List: asterisk-dev
Subject: Re: [asterisk-dev] SIP CANCEL/To tag
From: Johansson Olle E <olle () voop ! com>
Date: 2006-03-31 17:03:16
Message-ID: 785FF588-390C-4410-AFF9-493F00789FA8 () voop ! com
[Download RAW message or body]
31 mar 2006 kl. 02.39 skrev alex@pilosoft.com:
> Hello,
>
> Asterisk will not use the tag that was generated by remote site for
> the
> To: field when sending CANCEL message.
>
> Relevant line of chan_sip.c:
> /* Add tag *unless* this is a CANCEL, in which case we need
> to send it exactly
> as our original request, including tag (or presumably
> lack thereof) */
> if (!strcasestr(ot, "tag=") && sipmethod != SIP_CANCEL) {
> ^^^^^^^^^^^^^^^^^^^^^^^
>
> This causes a problem with certain gateways, which do expect CANCEL to
> contain the tag that was generated by the gateway in response (and
> sent in
> the 100 or 180 response).
>
> RFC3261 is conflicting itself about it. On one hand 8.2.6.2 says:
>
> If a request contained a To tag in the request, the To header field
> in the response MUST equal that of the request. However, if the To
> header field in the request did not contain a tag, the URI in
> the To
> header field in the response MUST equal the URI in the To header
> field; additionally, the UAS MUST add a tag to the To header
> field in
> the response (with the exception of the 100 (Trying) response, in
> which a tag MAY be present). This serves to identify the UAS
> that is
> responding, possibly resulting in a component of a dialog ID. The
> same tag MUST be used for all responses to that request, both final
> and provisional (again excepting the 100 (Trying)). Procedures for
> the generation of tags are defined in Section 19.3.
>
> I read it that UAC after receiving a message with a tag should
> always use
> the tag.
>
> On other hand, 9.1 says:
>
> The following procedures are used to construct a CANCEL
> request. The
> Request-URI, Call-ID, To, the numeric part of CSeq, and From header
> fields in the CANCEL request MUST be identical to those in the
> request being cancelled, including tags.
>
> What does "including tags" really mean in this context? Does it
> mean the
> tags, as updated by UAS?
It means that we should send exactly what we sent in the INVITE,
not the ones added later in the session by the UAS.
/O
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic