|
|
@@ -280,21 +280,25 @@ int json_tr_eval(
|
|
|
|
|
|
|
|
|
if(tp->type == TR_PARAM_STRING) {
|
|
|
- v1 = tp->v.s.s;
|
|
|
- if(fixup_spve_null(&v1, 1) != 0) {
|
|
|
- LM_ERR("cannot get spve_value from TR_PARAM_STRING : "
|
|
|
- "%.*s\n",
|
|
|
- tp->v.s.len, tp->v.s.s);
|
|
|
- pkg_free(pv);
|
|
|
- return -1;
|
|
|
- }
|
|
|
- if(fixup_get_svalue(msg, (gparam_p)v1, &v2) != 0) {
|
|
|
- LM_ERR("cannot get value from TR_PARAM_STRING\n");
|
|
|
+ if(str_search_char(&tp->v.s, '$') == NULL) {
|
|
|
+ v2 = tp->v.s;
|
|
|
+ } else {
|
|
|
+ v1 = tp->v.s.s;
|
|
|
+ if(fixup_spve_null(&v1, 1) != 0) {
|
|
|
+ LM_ERR("cannot get spve_value from TR_PARAM_STRING : "
|
|
|
+ "%.*s\n",
|
|
|
+ tp->v.s.len, tp->v.s.s);
|
|
|
+ pkg_free(pv);
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ if(fixup_get_svalue(msg, (gparam_p)v1, &v2) != 0) {
|
|
|
+ LM_ERR("cannot get value from TR_PARAM_STRING\n");
|
|
|
+ fixup_free_spve_null(&v1, 1);
|
|
|
+ pkg_free(pv);
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
fixup_free_spve_null(&v1, 1);
|
|
|
- pkg_free(pv);
|
|
|
- return -1;
|
|
|
}
|
|
|
- fixup_free_spve_null(&v1, 1);
|
|
|
sv = v2;
|
|
|
} else {
|
|
|
if(pv_get_spec_value(msg, (pv_spec_p)tp->v.data, &v) != 0
|