Module uac use some kind of Base64 for SipUri saving in Record-Route header parameter "rr_from_store_param" Base64 is case sensitive, but according to rfc3261: ``` When comparing header fields, field names are always case- insensitive Unless otherwise stated in the definition of a particular header field, field values, parameter names, and parameter values are case-insensitive Tokens are always case-insensitive Unless specified otherwise, values expressed as quoted strings are case-sensitive For example,
Contact: sip:alice@atlantacom;expires=3600
is equivalent to
CONTACT: sip:alice@atlantacom;ExPiReS=3600
and
Content-Disposition: session;handling=optional
is equivalent to
content-disposition: Session;HANDLING=OPTIONAL
The following two header fields are not equivalent:
Warning: 370 devnull "Choose a bigger pipe" Warning: 370 devnull "CHOOSE A BIGGER PIPE" ``` Ok " values expressed as quoted strings are case-sensitive", so I thought to make a quoted string like ``` Record-Route: sip:xxxxxxxxxxxx:5071;lr;ftag=SDj3nsa01-78422015;vsf="baSE64strinG";nat=yes ``` but according to rfc3261 DQUATE is not possible here: ``` other-param = pname [ "=" pvalue ] pname = 1*paramchar pvalue = 1*paramchar paramchar = param-unreserved / unreserved / escaped param-unreserved = "[" / "]" / "/" / ":" / "&" / "+" / "$" ``` Some devices in my network convert "rr_from_store_param" to lower-case letters, so there is trash in To/From headers after restore, It is not wise behaviour, but is rfc compliant
So any idea for using Base32 instead of Base64?
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/455
At this moment the code is doing only base64, adding the option for base32 could be an option.
However, even the comparison has to be done case-insensitive, I am not sure that UA is allowed to change those parameters, because they are part of the URI and the URI must be kept unchanged, being something set by the other side, which may expect it in the same format -- other parts of rfc about constructing the requests have to be checked.
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/455#issuecomment-168830376
according to rfc3261 19.1.4 URI Comparison ``` Comparison of the userinfo of SIP and SIPS URIs is case- sensitive. This includes userinfo containing passwords or formatted as telephone-subscribers. Comparison of all other components of the URI is case-insensitive unless explicitly defined otherwise. ```
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/455#issuecomment-169685461
This is for comparison of URIs, it is not about the construct of the SIP message and if the user agent is allowed to change the values it retrieves (that were set by another UA). Traveling, I didn't have yet the time to check it.
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/455#issuecomment-172445181
Closed #455.
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/455#event-517628248
Base64 usually works. In my mind, it is possible to close ussue
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/455#issuecomment-172454817