In addition to the normative text forbidding escaped characters, there is also Table 1 on page 151/152 of RFC 3261.
Escaped characters are only allowed in "header" parameters of a URI. However, "header" parameters are not allowed in a Request-URI according to Table 1. The normative text and tables such as Table 1 need to be taken into account in addition to the grammar when determining whether something is legal. It is often not possible to express all the requirements in ABNF. cheers, (-:bob Robert F. Penfield Chief Software Architect Acme Packet, Inc. 71 Third Avenue Burlington, MA 01803 [EMAIL PROTECTED] ----- Original Message ----- From: "Attila Sipos" <[EMAIL PROTECTED]> To: "Nir Hasson" <[EMAIL PROTECTED]>; <[email protected]> Sent: Wednesday, July 19, 2006 10:59 AM Subject: Re: [Sip-implementors] SIP URI header > > I agree that the grammar seems to show that escaped characters > are OK but if you look earlier in RFC3261 you will > see this... > > Request-URI: The Request-URI is a SIP or SIPS URI as described in > Section 19.1 or a general URI (RFC 2396 [5]). It indicates > the user or service to which this request is being addressed. > The Request-URI MUST NOT contain unescaped spaces or control > characters and MUST NOT be enclosed in "<>". > > Regards, > > Attila > > Attila Sipos > http:www.vegastream.com > > >>> -----Original Message----- >>> From: [EMAIL PROTECTED] >>> [mailto:[EMAIL PROTECTED] Behalf >>> Of Nir Hasson >>> Sent: 19 July 2006 15:09 >>> To: [email protected] >>> Subject: [Sip-implementors] SIP URI header >>> >>> >>> >>> Hi all, >>> >>> In RFC4475 (SIP torture), the following Request-URI considered to be >>> illegal, because it contains escaped header (%3C, %3E): >>> >>> sip:[EMAIL PROTECTED]:example.com%3E SIP/2.0 >>> >>> But, looking at the BNF rules at RFC3261 (below) it seem >>> that header can be >>> escaped (definition of hname for instance). >>> Am I missing something? >>> >>> >>> Request-URI = SIP-URI / SIPS-URI / absoluteURI >>> SIP-URI = "sip:" [ userinfo ] hostport >>> uri-parameters [ headers ] >>> >>> headers = "?" header *( "&" header ) >>> header = hname "=" hvalue >>> hname = 1*( hnv-unreserved / unreserved / escaped ) >>> hvalue = *( hnv-unreserved / unreserved / escaped ) >>> hnv-unreserved = "[" / "]" / "/" / "?" / ":" / "+" / "$" >>> unreserved = alphanum / mark >>> escaped = "%" HEXDIG HEXDIG >>> >>> Regards, >>> Nir. >>> >>> >>> _______________________________________________ >>> Sip-implementors mailing list >>> [email protected] >>> https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors >>> > > _______________________________________________ > Sip-implementors mailing list > [email protected] > https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors > _______________________________________________ Sip-implementors mailing list [email protected] https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
