merge single quote route parameters from trunk

3.1
Andrew Pogrebennyk 14 years ago
parent 624353bf72
commit 017447f6ad

@ -122,23 +122,23 @@ static int prepend_path(struct sip_msg* _m, str *user, int recv)
if (recv) {
/* 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 */
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);
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);
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);
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);
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;
}

@ -264,6 +264,7 @@ static inline void parse_uri_class(param_hooks_t* _h, param_t* _p)
static inline int parse_quoted_param(str* _s, str* _r)
{
char* end_quote;
char quote;
/* The string must have at least
* surrounding quotes
@ -272,14 +273,20 @@ static inline int parse_quoted_param(str* _s, str* _r)
return -1;
}
/* Store the kind of quoting (single or double)
* which we're handling with
*/
quote = (_s->s)[0];
/* Skip opening quote */
_s->s++;
_s->len--;
/* Find closing quote */
end_quote = q_memchr(_s->s, '\"', _s->len);
end_quote = q_memchr(_s->s, quote, _s->len);
/* Not found, return error */
if (!end_quote) {
return -2;
@ -413,7 +420,7 @@ static inline void parse_param_name(str* _s, pclass_t _c, param_hooks_t* _h, par
*/
static inline int parse_param_body(str* _s, param_t* _c)
{
if (_s->s[0] == '\"') {
if (_s->s[0] == '\"' || _s->s[0] == '\'') {
if (parse_quoted_param(_s, &(_c->body)) < 0) {
LOG(L_ERR, "parse_param_body(): Error while parsing quoted string\n");
return -2;

@ -1,3 +1,11 @@
kamailio (3.1.5+sipwise8) unstable; urgency=low
[ agranig ]
* path.c: Use single-quotes instead of double-quotes in received-param.
* parse_param.c: Also parse single-quoted params correctly.
-- Andrew Pogrebennyk <apogrebennyk@sipwise.com> Mon, 04 Jun 2012 18:16:56 +0200
kamailio (3.1.5+sipwise7) unstable; urgency=low
[rfuchs]

Loading…
Cancel
Save