Browse Source

json: do not parse transformation parameter for vars if none there

Daniel-Constantin Mierla 6 days ago
parent
commit
42014a3384
1 changed files with 17 additions and 13 deletions
  1. 17 13
      src/modules/json/json_trans.c

+ 17 - 13
src/modules/json/json_trans.c

@@ -280,21 +280,25 @@ int json_tr_eval(
 
 
 
 
 			if(tp->type == TR_PARAM_STRING) {
 			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);
 					fixup_free_spve_null(&v1, 1);
-					pkg_free(pv);
-					return -1;
 				}
 				}
-				fixup_free_spve_null(&v1, 1);
 				sv = v2;
 				sv = v2;
 			} else {
 			} else {
 				if(pv_get_spec_value(msg, (pv_spec_p)tp->v.data, &v) != 0
 				if(pv_get_spec_value(msg, (pv_spec_p)tp->v.data, &v) != 0