Subject: [Sip] Use of the Require header in responses

From: [email-masked]
Date: Sun, 21 Oct 2007 20:52:30 -0400

This message is to clarify an issue that has been causing me some
confusion, namely the meaning and use of the Require header in
responses.  I hope it helps others avoid my mistakes.

The bulk of RFC 3261 (including section 8.1.1.9 "Supported and
Require", 20.32 "Require", and 20.37 "Supported") describes the use of
the Supported and Require headers in a very straightforward way:
Supported is used to inform the other end of a dialog that the UA
supports the specified extensions.  Require is used in requests to
compel the other UA to reject a request if the other UA does not
support the specified extensions.

Within this framework, using Require in a response is pointless -- if
the UAC does not support the extension, it would be required to
discard the response, thus leaving it with no way of knowing that the
UAS wants to make use of the extension.

However, there is separate meaning for Require when it is used in a
response, namely to indicate that the UAS has performed some
particular processing specified in the extension in question.

This use is described in section 8.2.4 "Applying Extensions":

   Any extensions applied to a non-421 response MUST be listed in a
   Require header field included in the response.  Of course, the server
   MUST NOT apply extensions not listed in the Supported header field in
   the request.

Of course, exactly what processing is implied by a Require header in a
response is determined by the specification of the extension in
question.

If I recall correctly, there are three extensions or proposed
extensions that use Require headers in responses routinely.  One is
the GRUU extension, but I've forgotten the other two.

Dale

_______________________________________________
Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [email-masked] for questions on current sip
Use [email-masked] for new developments on the application of sip

---

From: Dean Willis <[email-masked]>
Date: Mon, 22 Oct 2007 00:14:51 -0500

> the GRUU extension, but I've forgotten the other two.

draft-ietf-sip-answermode uses its own extension header fields in  
responses to indicate which mode was applied to the request. This  
seemed a lot cleaner than a "Require" in the response.

--
Dean

---

From: "Michael Procter" <[email-masked]>
Date: Mon, 22 Oct 2007 00:43:08 -0700

> the GRUU extension, but I've forgotten the other two.

RFC3262 (PRACK) uses 'Require: 100rel' in provisional responses, to
trigger a PRACK (along with the RSeq header).  Maybe this is what you
remember?

Best regards,

Michael

---

From: "Elwell, John" <[email-masked]>
Date: Mon, 22 Oct 2007 08:47:55 +0100

> -----Original Message-----
> From: [email-masked] [mailto:[email-masked]] 
> Sent: 22 October 2007 01:53
> To: [email-masked]
> Subject: [Sip] Use of the Require header in responses
> 
[JRE] I think RFC 3262 is one such extension.

John

---

From: [email-masked]
Date: Tue, 23 Oct 2007 14:35:47 -0400

From: [email-masked]

Let me also add that in a 421 (Extension Required) response, the
Require field is used for a third purpose, to list the extenstions
that the UAC does not list in Supported but that the UAS needs to
invoke in order to usefully process the request.

(421 should not be confused with 420 (Bad Extension, or Extension Not
Implemented), which is used to reject a request with a Require or
Proxy-Require header.  420 uses the Unsupported header to list the
required extensions that it does not support.)

John Elwell points out that RFC 3262 is another case (for 1xx
responses that invoke PRACK).  The third was discussed in Chicago.

Dale