diff --git a/src/core/pvapi.c b/src/core/pvapi.c index 01485783150..30b2a7cdfea 100644 --- a/src/core/pvapi.c +++ b/src/core/pvapi.c @@ -857,6 +857,7 @@ char* pv_parse_spec2(str *in, pv_spec_p e, int silent) tr = 0; pvstate = 0; memset(e, 0, sizeof(pv_spec_t)); + e->pvp.pvi.type = PV_IDX_NONE; p = in->s; p++; if(*p==PV_LNBRACKET) @@ -1369,6 +1370,12 @@ int pv_get_spec_index(struct sip_msg* msg, pv_param_p ip, int *idx, int *flags) *idx = ip->pvi.u.ival; return 0; } + if(ip->pvi.type == PV_IDX_NONE) + { + *flags = PV_IDX_NONE; + *idx = ip->pvi.u.ival; + return 0; + } /* pvar */ if(pv_get_spec_value(msg, (pv_spec_p)ip->pvi.u.dval, &tv)!=0) diff --git a/src/core/pvar.h b/src/core/pvar.h index 1415f84af06..155b0125fba 100644 --- a/src/core/pvar.h +++ b/src/core/pvar.h @@ -61,6 +61,7 @@ #define PV_IDX_PVAR 1 #define PV_IDX_ALL 2 #define PV_IDX_ITR 3 +#define PV_IDX_NONE 4 /*! if PV name is dynamic, integer, or str */ #define pv_has_dname(pv) ((pv)->pvp.pvn.type==PV_NAME_PVAR)