Re: [sipcore] draft-ietf-sipcore-reinvite-06 and new contact in 2xx to *inital* invite

Paul Kyzivat <> Wed, 10 November 2010 10:16 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id EAEFD3A69C2 for <>; Wed, 10 Nov 2010 02:16:56 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -110.125
X-Spam-Status: No, score=-110.125 tagged_above=-999 required=5 tests=[AWL=-0.126, BAYES_00=-2.599, J_CHICKENPOX_73=0.6, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id kUHbu6qsEOwP for <>; Wed, 10 Nov 2010 02:16:56 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 057073A6807 for <>; Wed, 10 Nov 2010 02:16:56 -0800 (PST)
Authentication-Results:; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAGIA2kxAaMHG/2dsb2JhbACiNHGhBpsYhUoEhFiFf4MM
X-IronPort-AV: E=Sophos;i="4.59,177,1288569600"; d="scan'208";a="379367831"
Received: from ([]) by with ESMTP; 10 Nov 2010 10:17:22 +0000
Received: from [] ( []) by (8.13.8/8.14.3) with ESMTP id oAAAHHFC006091 for <>; Wed, 10 Nov 2010 10:17:19 GMT
Message-ID: <>
Date: Wed, 10 Nov 2010 18:17:15 +0800
From: Paul Kyzivat <>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv: Gecko/20101027 Thunderbird/3.1.6
MIME-Version: 1.0
References: <>
In-Reply-To: <>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Subject: Re: [sipcore] draft-ietf-sipcore-reinvite-06 and new contact in 2xx to *inital* invite
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: SIP Core Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 10 Nov 2010 10:16:57 -0000

On 11/10/2010 5:31 PM, Taisto Qvist wrote:
> Hi folks,
> A while ago I started a discussion concerning how a client should be have when it receives a new contact in the 2xx of an initial INVITE, compared to the early dialog-establishing 183.
> My reading of chapter, rfc3261, tells me that a client should NOT update its remote target with the Contact of the 2xx.
> The Contact of the 2xx, should be the same as the 1xx.
> I have now read draft-ietf-sipcore-reinvite-06 and I am trying to interpret the results, since even if that document mainly concerns re-invite, chapter 4.9 discusses the early dialog created by an initial request.
> The document does not however mention(?) differences in contact:uri between the initial 1xx, and the final 2xx to the INVITE.
> The draft mandates that a successfull response, a reliable provisional response, or an in-dialog request to the new target implies a successfull change of contact-uri.
> Should I therefore assume that since a 2xx in a normal (initial) invite, is also retransmitted reliably, that a UAC which receives a new contact in the 2xx compared to the contact in a 1xx(wether it has been sent reliably or not), MUST update its remote target?
> Since this (seems to) contradict, I would very much appreciate your views.

I'm interested to hear Gonzalo's take on this.
IMO the most reasonable thing to do in this circumstance is to honor the 
new contact in the 2xx. This is probably contrary to 3261. Whether it is 
supported by ...sipcore-reinvite... may be debatable.

>     If the dialog identifier in the 2xx response matches the dialog
>     identifier of an existing dialog, the dialog MUST be transitioned to
>     the "confirmed" state, and the route set for the dialog MUST be
>     recomputed based on the 2xx response using the procedures of Section
>  Otherwise, a new dialog in the "confirmed" state MUST be
>     constructed using the procedures of Section 12.1.2.
>>>     Note that the only piece of state that is recomputed is the route
>>>     set.  Other pieces of state such as the highest sequence numbers
>        (remote and local) sent within the dialog are not recomputed.  The
>        route set only is recomputed for backwards compatibility.  RFC
>        2543 did not mandate mirroring of the Record-Route header field in
>        a 1xx, only 2xx.  However, we cannot update the entire state of
>        the dialog, since mid-dialog requests may have been sent within
>        the early dialog, modifying the sequence numbers, for example.

Note that the route-set doesn't include the contact. Maybe that was your 

> Additionally, I was a bit surprised by the following text, in the above draft.
>     Note also that a given UAS can
>     establish additional early dialogs, which can have different targets,
>     by returning additional unreliable provisional responses with
>     different To tags.
> Since rfc3261, chapter says:
>     A UAS MAY send as many provisional responses as it likes.  Each of these MUST
>     indicate the same dialog ID.  However, these will not be delivered reliably.
> Which implies to me, that a *single* UAS can not send multiple 1xx with different
> tags?

Perhaps this is a matter of terminology.
If you prefer, consider the same box to contain multiple UAs, each of 
which received a forked copy of the request. Then each returns a single 
response with a unique to-tag.

There are a number of cases where this is a viable strategy for handling 
various problems.


> Regards
> Taisto Qvist
> _______________________________________________
> sipcore mailing list