Hi Juha, On 04/07/2013 01:51 PM, Juha Heinanen wrote: > i escaped them, but it didn't help. path header now looks like: > > Path: > <sip:192.98.102.10;transport=tcp;lr;received='sip:192.98.102.10:58156%3Btransport%3Dtcp'>. > > and i still get the same error: > > Apr 7 14:49:47 wheezy1 /usr/sbin/sip-proxy[8709]: ERROR: registrar > [save.c:887]: Failed to parse Path: URI
I don't see why you think that ; and = should be escaped. rfc3327 chapter 4 says: The syntax for Path is defined as follows: Path = "Path" HCOLON path-value *( COMMA path-value ) path-value = name-addr *( SEMI rr-param ) Note that the Path header field values conform to the syntax of a Route element as defined in [1]. As suggested therein, such values MUST include the loose-routing indicator parameter ";lr" for full compliance with [1]. The rules for Route element are as follows: Route = "Route" HCOLON route-param *(COMMA route-param) route-param = name-addr *( SEMI rr-param ) name-addr = [ display-name ] LAQUOT addr-spec RAQUOT addr-spec = SIP-URI / SIPS-URI / absoluteURI rr-param = generic-param generic-param = token [ EQUAL gen-value ] gen-value = token / host / quoted-string Why would someone want to escape semicolor (SEMI) which separated either Route or URI parameters? Also EQUAL used in pname=pvalue does not need escaping. We've already had a closer look at add_path_received() here at sipwise when we found double quotes in Route param value to be invalid and changed them to single ones. We have not observed the error in save() you have posted in kamailio 3.3.. Moreover, the ibc's Ragel-SIP-Parser suggests that the Path header above is correct :) So, from my PoV: - the ;transport=tcp;lr;received=... part are route-param's which follow the above rules. - the 'sip:192.98.102.10:58156;transport=tcp' part contains URI parameters. It is still fine according to definition of Path/Route element above - and agrees with the definition of other-param too: SIP-URI = "sip:" [ userinfo ] hostport uri-parameters [ headers ] uri-parameters = *( ";" uri-parameter) uri-parameter = transport-param / user-param / method-param / ttl-param / maddr-param / lr-param / other-param other-param = pname [ "=" pvalue ] pvalue = 1*paramchar paramchar = param-unreserved / unreserved / escaped param-unreserved = "[" / "]" / "/" / ":" / "&" / "+" / "$" unreserved = alphanum / mark mark = "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")" alphanum = ALPHA / DIGIT escaped = "%" HEXDIG HEXDIG Do you also have the save() problem in 3.3? Andrew _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users