diff --git a/src/modules/siputils/checks.c b/src/modules/siputils/checks.c index b700c620c01..ee60595e3ae 100644 --- a/src/modules/siputils/checks.c +++ b/src/modules/siputils/checks.c @@ -134,30 +134,17 @@ int w_has_totag(struct sip_msg* _m, char* _foo, char* _bar) */ int is_uri(struct sip_msg* _m, char* _sp, char* _s2) { - pv_spec_t *sp; - pv_value_t pv_val; sip_uri_t turi; + str uval; - sp = (pv_spec_t *)_sp; - - if (sp && (pv_get_spec_value(_m, sp, &pv_val) == 0)) { - if (pv_val.flags & PV_VAL_STR) { - if (pv_val.rs.len == 0 || pv_val.rs.s == NULL) { - LM_DBG("missing argument\n"); - return -1; - } - if(parse_uri(pv_val.rs.s, pv_val.rs.len, &turi)!=0) { - return -1; - } - return 1; - } else { - LM_ERR("pseudo variable value is not string\n"); - return -1; - } - } else { - LM_ERR("failed to get pseudo variable value\n"); + if(fixup_get_svalue(_m, (gparam_t*)_sp, &uval)!=0) { + LM_ERR("cannot get parameter value\n"); return -1; } + if(parse_uri(uval.s, uval.len, &turi)!=0) { + return -1; + } + return 1; } /* diff --git a/src/modules/siputils/siputils.c b/src/modules/siputils/siputils.c index 50cd7425aa1..bfd90d020ad 100644 --- a/src/modules/siputils/siputils.c +++ b/src/modules/siputils/siputils.c @@ -137,8 +137,8 @@ static cmd_export_t cmds[]={ free_fixup_get_uri_param, REQUEST_ROUTE|LOCAL_ROUTE}, {"tel2sip", (cmd_function)tel2sip, 3, fixup_tel2sip, 0, REQUEST_ROUTE|FAILURE_ROUTE|BRANCH_ROUTE|ONREPLY_ROUTE}, - {"is_uri", (cmd_function)is_uri, 1, fixup_pvar_null, - fixup_free_pvar_null, ANY_ROUTE}, + {"is_uri", (cmd_function)is_uri, 1, fixup_spve_null, + fixup_free_spve_null, ANY_ROUTE}, {"is_e164", (cmd_function)is_e164, 1, fixup_pvar_null, fixup_free_pvar_null, REQUEST_ROUTE|FAILURE_ROUTE|LOCAL_ROUTE}, {"is_uri_user_e164", (cmd_function)w_is_uri_user_e164, 1, fixup_pvar_null,