Explorar el Código

pv: vars to get the length for o-uri/r-uri/f-uri/t-uri username

- $oUl, $rUl, $fUl. $tUl
- the length is already available in the str value, optimizing a bit by
no longer having to use {s.len}
Daniel-Constantin Mierla hace 5 años
padre
commit
974038f5f8
Se han modificado 2 ficheros con 21 adiciones y 0 borrados
  1. 12 0
      src/modules/pv/pv.c
  2. 9 0
      src/modules/pv/pv_core.c

+ 12 - 0
src/modules/pv/pv.c

@@ -272,6 +272,9 @@ static pv_export_t mod_pvs[] = {
 	{{"from.user", (sizeof("from.user")-1)}, /* */
 		PVT_OTHER, pv_get_from_attr, pv_set_from_username,
 		0, 0, pv_init_iname, 2},
+	{{"fUl", (sizeof("fUl")-1)}, /* */
+		PVT_OTHER, pv_get_from_attr, 0,
+		0, 0, pv_init_iname, 6},
 	{{"mb", (sizeof("mb")-1)}, /* */
 		PVT_OTHER, pv_get_msg_buf, 0,
 		0, 0, 0, 0},
@@ -314,6 +317,9 @@ static pv_export_t mod_pvs[] = {
 	{{"oU", (sizeof("oU")-1)}, /* */
 		PVT_OTHER, pv_get_ouri_attr, 0,
 		0, 0, pv_init_iname, 1},
+	{{"oUl", (sizeof("oUl")-1)}, /* */
+		PVT_OTHER, pv_get_ouri_attr, 0,
+		0, 0, pv_init_iname, 6},
 	{{"pd", (sizeof("pd")-1)}, /* */
 		PVT_OTHER, pv_get_ppi_attr, 0,
 		0, pv_parse_index, pv_init_iname, 3},
@@ -383,6 +389,9 @@ static pv_export_t mod_pvs[] = {
 	{{"ruri.user", (sizeof("ruri.user")-1)}, /* */
 		PVT_RURI_USERNAME, pv_get_ruri_attr, pv_set_ruri_user,
 		0, 0, pv_init_iname, 1},
+	{{"rUl", (sizeof("rUl")-1)}, /* */
+		PVT_RURI_USERNAME, pv_get_ruri_attr, 0,
+		0, 0, pv_init_iname, 6},
 	{{"rv", (sizeof("rv")-1)}, /* */
 		PVT_OTHER, pv_get_version, 0,
 		0, 0, 0, 0},
@@ -470,6 +479,9 @@ static pv_export_t mod_pvs[] = {
 	{{"to.user", (sizeof("to.user")-1)}, /* */
 		PVT_OTHER, pv_get_to_attr, pv_set_to_username,
 		0, 0, pv_init_iname, 2},
+	{{"tUl", (sizeof("tUl")-1)}, /* */
+		PVT_OTHER, pv_get_to_attr, pv_set_to_username,
+		0, 0, pv_init_iname, 6},
 	{{"true", (sizeof("true")-1)}, /* */
 		PVT_OTHER, pv_get_true, 0,
 		0, 0, 0, 0},

+ 9 - 0
src/modules/pv/pv_core.c

@@ -323,6 +323,10 @@ int pv_get_xuri_attr(struct sip_msg *msg, struct sip_uri *parsed_uri,
 	} else if(param->pvn.u.isname.name.n==5) /* uri scheme */ {
 		return pv_get_strintval(msg, param, res, &pv_uri_scheme[parsed_uri->type],
 				(int)parsed_uri->type);
+	} else if(param->pvn.u.isname.name.n==6) /* username length */ {
+		if(parsed_uri->user.s==NULL || parsed_uri->user.len<=0)
+			return pv_get_sintval(msg, param, res, 0);
+		return pv_get_sintval(msg, param, res, parsed_uri->user.len);
 	}
 	LM_ERR("unknown specifier\n");
 	return pv_get_null(msg, param, res);
@@ -452,6 +456,11 @@ int pv_get_xto_attr(struct sip_msg *msg, pv_param_t *param,
 			return pv_get_null(msg, param, res);
 		}
 		return pv_get_strval(msg, param, res, &uri->host);
+	} else if(param->pvn.u.isname.name.n==6) /* username length */ {
+		if(uri->user.s==NULL || uri->user.len<=0) {
+			return pv_get_sintval(msg, param, res, 0);
+		}
+		return pv_get_sintval(msg, param, res, uri->user.len);
 	}
 
 	LM_ERR("unknown specifier\n");