ietf-corpus

rfc-8217

Clarifications for When to Use the name-addr Production in SIP Messages

R. Sparks
date2017-08 streamIETF areaart wgsipcore statusPROPOSED STANDARD pages6 canonicalhttps://www.rfc-editor.org/rfc/rfc8217 doi10.17487/RFC8217
RFC 3261 constrained several SIP header fields whose grammar contains the "name-addr / addr-spec" alternative to use name-addr when certain characters appear. Unfortunately, it expressed the constraints with prose copied into each header field definition, and at least one header field was missed. Further, the constraint has not been copied into documents defining extension headers whose grammar contains the alternative. This document updates RFC 3261 to state the constraint generically and clarifies that the constraint applies to all SIP header fields where there is a choice between using name-addr or addr-spec. It also updates the RFCs that define extension SIP header fields using the alternative to clarify that the constraint applies (RFCs 3325, 3515, 3892, 4508, 5002, 5318, 5360, and 5502).

updates

Extracted elements (12)

design-rationale §4

Many errata had been submitted against extension RFCs (3325, 3515, 3892, 4508, 5002, 5318, 5360, 5502) to add the missing name-addr constraint; this document consolidates those corrections into a single normative update rather than processing them individually.

sip, process

design-rationale §1

RFC 3261 originally expressed the name-addr constraint as prose copied into each individual header field definition, which caused it to be missed for the To header field and omitted from extension header field specifications; this document replaces the per-field prose with a single generic constraint.

sip

design-rationale §1

The original RFC 3261 Section 20 introduction language ('The Contact, From, and To header fields...') was ambiguous because it could be read as applying only to those three fields, necessitating a generic restatement that explicitly covers all header fields using the name-addr / addr-spec alternative.

sip

interoperability-note §1

A SIP message formed without honoring the name-addr constraint is still syntactically valid, but characters after a comma, question mark, or semicolon will likely be interpreted as header field parameters or additional header field values rather than part of the URI.

sip

interoperability-note §1

An exception to the parsing ambiguity exists for degenerate URLs like sip:10.0.0.1,@10.0.0.0, where a comma can be parsed via the 'user' production in the SIP ABNF grammar.

sip

interoperability-note §3

If a URI is not enclosed in angle brackets, any semicolon-delimited parameters are treated as header-parameters, not URI parameters; this distinction is load-bearing for correct SIP message interpretation.

sip

normative-requirement §4 MUST NOT

For all SIP extension header fields defined in RFCs 3325, 3515, 3892, 4508, 5002, 5318, 5360, and 5502 that allow the addr-spec / name-addr choice, the addr-spec form MUST NOT be used if the value would contain a comma, semicolon, or question mark.

sip

normative-requirement §3 MUST

When a URI appears in a SIP header field that allows the name-addr / addr-spec choice, any URI parameters MUST be contained within angle brackets (< and >).

sip

normative-requirement §3 MUST NOT

When constructing any SIP header field whose grammar allows choosing between name-addr and addr-spec, the addr-spec form MUST NOT be used if its value would contain a comma, semicolon, or question mark.

sip

protocol-element §3

The header fields defined in RFC 3261 that allow the name-addr / addr-spec choice are: To, From, Contact, and Reply-To.

sip

protocol-element §1

The name-addr production is defined as an optional display-name followed by a URI enclosed in angle brackets (LAQUOT addr-spec RAQUOT), while addr-spec is a bare SIP-URI, SIPS-URI, or absoluteURI with no enclosing brackets.

sip

security-consideration §6

This document introduces no new security considerations; the primary pre-existing concern is that SIP messages produced without honoring the name-addr constraint will very likely be misinterpreted by the receiving element, potentially causing routing or parameter-handling errors.

sip, security