浏览代码

- added nested select to support parsing headers consisting from "params" only
e.g.
P-Charging-Vector: icid-value=1234bc9876e;icid-generated-at=192.0.6.8;orig-ioi=home1.net
selectable also using
%@hf_value.p_charging_vector.params["icid-value"]

Note that %@message.h.p_charging_vector.params["icid-value"] has been already working

Tomas Mandys 17 年之前
父节点
当前提交
c9e9df4c30
共有 2 个文件被更改,包括 7 次插入0 次删除
  1. 3 0
      modules_s/eval/eval.c
  2. 4 0
      modules_s/textops/textops.c

+ 3 - 0
modules_s/eval/eval.c

@@ -1975,6 +1975,7 @@ static int sel_get(str* res, select_t* s, struct sip_msg* msg) {
 
 SELECT_F(select_any_nameaddr)
 SELECT_F(select_any_uri)
+SELECT_F(select_anyheader_params)
 
 select_row_t sel_declaration[] = {
 	{ NULL, SEL_PARAM_STR, STR_STATIC_INIT(MODULE_NAME), sel_eval, SEL_PARAM_EXPECTED},
@@ -1985,8 +1986,10 @@ select_row_t sel_declaration[] = {
 
 	{ sel_get, SEL_PARAM_STR, STR_STATIC_INIT("nameaddr"), select_any_nameaddr, NESTED | CONSUME_NEXT_STR},
 	{ sel_get, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_any_uri, NESTED | CONSUME_NEXT_STR},
+	{ sel_get, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_anyheader_params, NESTED},
 	{ sel_register, SEL_PARAM_STR, STR_STATIC_INIT("nameaddr"), select_any_nameaddr, NESTED | CONSUME_NEXT_STR},
 	{ sel_register, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_any_uri, NESTED | CONSUME_NEXT_STR},
+	{ sel_register, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_anyheader_params, NESTED},
 
 	/* for backward compatability only, use @sys.unique */
 	{ sel_eval, SEL_PARAM_STR, STR_STATIC_INIT("uuid"), select_sys_unique, 0},

+ 4 - 0
modules_s/textops/textops.c

@@ -2084,6 +2084,7 @@ static int sel_hf_value2_name_param_name(str* res, select_t* s, struct sip_msg*
 
 SELECT_F(select_any_nameaddr)
 SELECT_F(select_any_uri)
+SELECT_F(select_anyheader_params)
 
 select_row_t sel_declaration[] = {
 	{ NULL, SEL_PARAM_STR, STR_STATIC_INIT("hf_value"), sel_hf_value, SEL_PARAM_EXPECTED},
@@ -2094,6 +2095,8 @@ select_row_t sel_declaration[] = {
 	{ sel_hf_value_name, SEL_PARAM_STR, STR_STATIC_INIT("uri"), sel_hf_value_name_uri, FIXUP_CALL},
 	{ sel_hf_value_name, SEL_PARAM_STR, STR_STATIC_INIT("name"), sel_hf_value_name_name, FIXUP_CALL},
 	{ sel_hf_value_name, SEL_PARAM_STR, STR_STATIC_INIT("nameaddr"), select_any_nameaddr, NESTED | CONSUME_NEXT_STR}, /* it duplicates param,p,name,... */
+	{ sel_hf_value_name, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_anyheader_params, NESTED},
+
 	{ sel_hf_value_name_uri, SEL_PARAM_INT, STR_NULL, select_any_uri, NESTED},
 	{ sel_hf_value_name, SEL_PARAM_STR, STR_NULL, sel_hf_value_name_param_name, FIXUP_CALL},
 
@@ -2102,6 +2105,7 @@ select_row_t sel_declaration[] = {
 
 	{ NULL, SEL_PARAM_STR, STR_STATIC_INIT("hf_value2"), sel_hf_value2, SEL_PARAM_EXPECTED},
 	{ sel_hf_value2, SEL_PARAM_STR, STR_NULL, sel_hf_value2_name, CONSUME_NEXT_INT | OPTIONAL | FIXUP_CALL},
+	{ sel_hf_value2_name, SEL_PARAM_STR, STR_STATIC_INIT("params"), select_anyheader_params, NESTED},
 	{ sel_hf_value2_name, SEL_PARAM_STR, STR_NULL, sel_hf_value2_name_param_name, FIXUP_CALL},
 	{ sel_hf_value2_name_param_name, SEL_PARAM_STR, STR_STATIC_INIT("nameaddr"), select_any_nameaddr, NESTED},
 	{ sel_hf_value2_name_param_name, SEL_PARAM_STR, STR_STATIC_INIT("uri"), select_any_uri, NESTED},