int select_uri_params(str* res, select_t* s, struct sip_msg* msg) { int ret; if (!msg || !res) { return select_any_params(res, s, msg); } if (select_uri_p == NULL) { if (parse_uri(res->s, res->len, &uri)<0) return -1; select_uri_p = &uri; } if (s->param_offset[select_level+1]-s->param_offset[select_level]==1) RETURN0_res(select_uri_p->params); *res=select_uri_p->params; ret = select_any_params(res, s, msg); if ((ret < 0) && (select_uri_p->sip_params.s != NULL) && (select_uri_p->sip_params.s != select_uri_p->params.s) ) { /* Search also in the original sip: uri parameters. */ *res = select_uri_p->sip_params; ret = select_any_params(res, s, msg); } return ret; }
int select_uri_params(str* res, select_t* s, struct sip_msg* msg) { if (!msg || !res) { return select_any_params(res, s, msg); } if (parse_uri(res->s, res->len, &uri)<0) return -1; if (s->param_offset[s->lvl+1]-s->param_offset[s->lvl]==1) RETURN0_res(uri.params); *res=uri.params; return select_any_params(res, s, msg); }
int select_nameaddr_params(str* res, select_t* s, struct sip_msg* msg) { char *p; p=find_not_quoted(res, '<'); if (!p) { p=find_not_quoted(res, ';'); } else { res->len=res->len - (p-res->s) -1; res->s=p +1; p=find_not_quoted(res, '>'); if (!p) { LM_ERR("no > found, invalid nameaddr value\n"); return -1; } res->len=res->len - (p-res->s) -1; res->s=p +1; p=find_not_quoted(res, ';'); } if (!p) return 1; res->len=res->len - (p-res->s) -1; res->s=p +1; if (s->param_offset[select_level+1]-s->param_offset[select_level]==1) return (res->len ? 0 : 1); return select_any_params(res, s, msg); }