Hi Florian,

I think the intent of RFC3261 should have been to allow optional whitespace at the end of a quoted-string:

Currently in RFC 3261:
quoted-string = SWS DQUOTE *(qdtext / quoted-pair ) DQUOTE

Probably should have been in RFC 3261:
quoted-string = LDQUOT *(qdtext / quoted-pair ) RDQUOT

However, that is water under the bridge, so I have no objection changing the c-p-instance production to look like this:

c-p-instance = "+sip.instance" EQUAL DQUOTE "<" instance-val ">" DQUOTE

If you are responsible for an implementation however, I urge you to be generous in what you receive in this regard. Please ignore extraneous whitespace unless the spec gives it some special semantic meaning (ex: inside a quoted string).

thanks,
-rohan



On Apr 13, 2009, at 1:50 PM, Florian Zumbiehl wrote:
Hi,

in case you've read my bug report concerning draft-ietf-sip-gruu-15
from this morning, the short version: draft-ietf-sip-outbound-16 is
affected by the same problem.

The complete version:

draft-ietf-sip-outbound-16 contains (amongst others) these ABNF rules:

| contact-params =/ c-p-reg / c-p-instance
| c-p-instance   =  "+sip.instance" EQUAL
|                   LDQUOT "<" instance-val ">" RDQUOT

which, when adding them to the grammar from RFC 3261, would produce
from <Contact> a language that's a superset of the language that would
be produced by <Contact> from RFC 3261-only.

In particular, the language produced by <foo> is a subset of the
"outbound extended" language, but not of the RFC 3261-only one:

| foo = "m: <sip:[email protected]>;+sip.instance=" DQUOTE "x" DQUOTE SP CRLF

To put it in more practical terms: the <RDQUOT> in <c-p-instance>
allows for trailing <LWS>, which <contact-extension> does not,
so an implementation conforming to draft-ietf-sip-outbound-16 could
produce a Contact header that potentially could not be parsable
(except as an <extension-header>) by an implementation conforming
to RFC 3261.

Thus, I would suggest to replace the rules quoted above by:

| contact-params =/ c-p-reg / c-p-instance
| c-p-instance   =  "+sip.instance" EQUAL
|                   LDQUOT "<" instance-val ">" DQUOTE

This produces the same language, maybe it's a more consistent
replacement:

| contact-params =/ c-p-reg / c-p-instance
| c-p-instance   =  "+sip.instance" EQUAL
|                   DQUOTE "<" instance-val ">" DQUOTE

Florian

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

Reply via email to