Hi,

As far as I can tell from the RFC 3261 ABNF, it is permitted to put SEMI and EQUAL in the username of a URI, but it has no semantic validity. That is to say, this is permitted:

   <sip:myval=abc;user@domain:5060>

but doesn't mean anything. 'myval=abc;user' is just one big long username:

SIP-URI          =  "sip:" [ userinfo ] hostport
                    uri-parameters [ headers ]
SIPS-URI         =  "sips:" [ userinfo ] hostport
                    uri-parameters [ headers ]
userinfo         =  ( user / telephone-subscriber ) [ ":" password ] "@"
user             =  1*( unreserved / escaped / user-unreserved )
user-unreserved  =  "&" / "=" / "+" / "$" / "," / ";" / "?" / "/"

And yet, there are some specs out there which put tokens which are semantically key=value parameters in the user part of a URI, and expect equipment to extract their values. One spec in particular that comes to mind is RFC 4694 ("Number Portability Parameters for the "tel" URI"), which explicitly contemplates outcomes like this:

   Contact: <sip:14045551212;npdi;rn=14045550000@domain>

... with the expectation that portability-aware equipment will harvest the value of the 'rn' parameter, much as it would a uri-parameter or a header parameter. In fact, as I understand it, the whole idea behind this approach is that the essential bareword - '14045551212' - remains the user part of the RURI, the canonical dialed destination. The other parameters can be ignored by equipment that doesn't understand them.

So, how does that work? Is the voodoo that gives username-embedded parameters meaning embedded somehow in the complex rules governing the conversion of 'tel:' scheme URIs to 'sip:'? Or am I mistaken in my assumption that parameters cannot be embedded in the user part of a URI to begin with?

The ultimate reason for asking is that I am looking to embed a parameter like this in a Diversion URI. I am dealing with a gateway that will try a redirect destination, and if it fails to reach that destination, will call me again, and send me a Diversion header anew. The Diversion header is rebuilt and doesn't pass on any URI or header parameters I include, but if I stick something in the username, I'll get it back. I need it for a piece of application state. However, before I go this route, I need to have some idea of whether there's any justification for the expectation that my extra parameter will be ignored by equipment which doesn't understand it. Otherwise, I'm just screwing up the diverted phone number.

Many thanks!

-- Alex

--
Alex Balashov | Principal | Evariste Systems LLC

Tel: +1-706-510-6800 (direct) / +1-800-250-5920 (toll-free)
Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
_______________________________________________
Sip-implementors mailing list
Sip-implementors@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/sip-implementors

Reply via email to