[SR-Users] path uri problem
Iñaki Baz Castillo
ibc at aliax.net
Wed Apr 10 10:44:59 CEST 2013
BTW not sure if your patch does it but I strongly suggest removing the
useless and wrong single quotes around the received value (once such a
value is properly hex-escaped it becomes a valid URI param value).
Please remember that single quote is NOT a valid delimitator AT ALL
for a SIP URI parameter value.
Regards.
2013/4/10 Iñaki Baz Castillo <ibc at aliax.net>:
> Juha, could you please paste here how the Path above looks with your change?
>
> Thanks a lot.
>
> 2013/4/10 Juha Heinanen <jh at tutpro.com>:
>> below is patch that fixes receiced param value. i have not tested if
>> kamalio that gets such a value is able to unescape the escaped chars.
>> if not, that is a bug too.
>>
>> -- juha
>>
>> *** path.c Fri Mar 29 19:14:46 2013
>> --- /usr/src/sip-router/modules/path/path.c Wed Apr 10 08:09:43 2013
>> ***************
>> *** 145,171 ****
>> if (param == PATH_PARAM_RECEIVED) {
>> /* TODO: agranig: optimize this one! */
>> src_ip = ip_addr2a(&_m->rcv.src_ip);
>> ! rcv_addr.s = pkg_malloc(6 + IP_ADDR_MAX_STR_SIZE + 22); /* 'sip:<ip>:<port>;transport=sctp'\0 */
>> if(!rcv_addr.s) {
>> LM_ERR("no pkg memory left for receive-address\n");
>> goto out3;
>> }
>> switch (_m->rcv.proto) {
>> case PROTO_UDP:
>> ! rcv_addr.len = snprintf(rcv_addr.s, 6 + IP_ADDR_MAX_STR_SIZE + 6, "'sip:%s:%u'", src_ip, _m->rcv.src_port);
>> break;
>> case PROTO_TCP:
>> ! rcv_addr.len = snprintf(rcv_addr.s, 6 + IP_ADDR_MAX_STR_SIZE + 20, "'sip:%s:%u;transport=tcp'", src_ip, _m->rcv.src_port);
>> break;
>> case PROTO_TLS:
>> ! rcv_addr.len = snprintf(rcv_addr.s, 6 + IP_ADDR_MAX_STR_SIZE + 20, "'sip:%s:%u;transport=tls'", src_ip, _m->rcv.src_port);
>> break;
>> case PROTO_SCTP:
>> ! rcv_addr.len = snprintf(rcv_addr.s, 6 + IP_ADDR_MAX_STR_SIZE + 21, "'sip:%s:%u;transport=sctp'", src_ip, _m->rcv.src_port);
>> break;
>> case PROTO_WS:
>> case PROTO_WSS:
>> ! rcv_addr.len = snprintf(rcv_addr.s, 6 + IP_ADDR_MAX_STR_SIZE + 19, "'sip:%s:%u;transport=ws'", src_ip, _m->rcv.src_port);
>> break;
>> }
>>
>> --- 145,171 ----
>> if (param == PATH_PARAM_RECEIVED) {
>> /* TODO: agranig: optimize this one! */
>> src_ip = ip_addr2a(&_m->rcv.src_ip);
>> ! rcv_addr.s = pkg_malloc(6 + IP_ADDR_MAX_STR_SIZE + 24); /* sip:<ip>:<port>%3Btransport%3Dsctp\0 */
>> if(!rcv_addr.s) {
>> LM_ERR("no pkg memory left for receive-address\n");
>> goto out3;
>> }
>> switch (_m->rcv.proto) {
>> case PROTO_UDP:
>> ! rcv_addr.len = snprintf(rcv_addr.s, 6 + IP_ADDR_MAX_STR_SIZE + 4, "sip:%s:%u", src_ip, _m->rcv.src_port);
>> break;
>> case PROTO_TCP:
>> ! rcv_addr.len = snprintf(rcv_addr.s, 6 + IP_ADDR_MAX_STR_SIZE + 22, "sip:%s:%u%%3Btransport%%3Dtcp", src_ip, _m->rcv.src_port);
>> break;
>> case PROTO_TLS:
>> ! rcv_addr.len = snprintf(rcv_addr.s, 6 + IP_ADDR_MAX_STR_SIZE + 22, "sip:%s:%u%%3Btransport%%3Dtls", src_ip, _m->rcv.src_port);
>> break;
>> case PROTO_SCTP:
>> ! rcv_addr.len = snprintf(rcv_addr.s, 6 + IP_ADDR_MAX_STR_SIZE + 23, "sip:%s:%u%%3Btransport%%3Dsctp", src_ip, _m->rcv.src_port);
>> break;
>> case PROTO_WS:
>> case PROTO_WSS:
>> ! rcv_addr.len = snprintf(rcv_addr.s, 6 + IP_ADDR_MAX_STR_SIZE + 21, "sip:%s:%u%%3Btransport%%3Dws", src_ip, _m->rcv.src_port);
>> break;
>> }
>>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
>
> --
> Iñaki Baz Castillo
> <ibc at aliax.net>
--
Iñaki Baz Castillo
<ibc at aliax.net>
More information about the sr-users
mailing list