Browse Source

pv: $fsp - return send socket port, or 0 if $fs not set

Daniel-Constantin Mierla 4 years ago
parent
commit
c5e2c397d9
3 changed files with 19 additions and 0 deletions
  1. 3 0
      src/modules/pv/pv.c
  2. 13 0
      src/modules/pv/pv_core.c
  3. 3 0
      src/modules/pv/pv_core.h

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

@@ -253,6 +253,9 @@ static pv_export_t mod_pvs[] = {
 	{{"fsn", (sizeof("fsn")-1)}, /* */
 	{{"fsn", (sizeof("fsn")-1)}, /* */
 		PVT_OTHER, pv_get_force_sock_name, pv_set_force_sock_name,
 		PVT_OTHER, pv_get_force_sock_name, pv_set_force_sock_name,
 		0, 0, 0, 0},
 		0, 0, 0, 0},
+	{{"fsp", (sizeof("fsp")-1)}, /* */
+		PVT_OTHER, pv_get_force_sock_port, 0,
+		0, 0, 0, 0},
 	{{"ft", (sizeof("ft")-1)}, /* */
 	{{"ft", (sizeof("ft")-1)}, /* */
 		PVT_OTHER, pv_get_from_attr, 0,
 		PVT_OTHER, pv_get_from_attr, 0,
 		0, 0, pv_init_iname, 4},
 		0, 0, pv_init_iname, 4},

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

@@ -1075,6 +1075,19 @@ int pv_get_force_sock_name(struct sip_msg *msg, pv_param_t *param,
 	return pv_get_strval(msg, param, res, &msg->force_send_socket->sockname);
 	return pv_get_strval(msg, param, res, &msg->force_send_socket->sockname);
 }
 }
 
 
+int pv_get_force_sock_port(struct sip_msg *msg, pv_param_t *param,
+		pv_value_t *res)
+{
+	if(msg==NULL)
+		return -1;
+
+	if (msg->force_send_socket==0)
+		return pv_get_uintval(msg, param, res, 0);
+
+	return pv_get_intstrval(msg, param, res, (int)msg->force_send_socket->port_no,
+			&msg->force_send_socket->port_no_str);
+}
+
 int pv_get_useragent(struct sip_msg *msg, pv_param_t *param,
 int pv_get_useragent(struct sip_msg *msg, pv_param_t *param,
 		pv_value_t *res)
 		pv_value_t *res)
 {
 {

+ 3 - 0
src/modules/pv/pv_core.h

@@ -184,6 +184,9 @@ int pv_get_force_sock(struct sip_msg *msg, pv_param_t *param,
 int pv_get_force_sock_name(struct sip_msg *msg, pv_param_t *param,
 int pv_get_force_sock_name(struct sip_msg *msg, pv_param_t *param,
 		pv_value_t *res);
 		pv_value_t *res);
 
 
+int pv_get_force_sock_port(struct sip_msg *msg, pv_param_t *param,
+		pv_value_t *res);
+
 int pv_get_useragent(struct sip_msg *msg, pv_param_t *param,
 int pv_get_useragent(struct sip_msg *msg, pv_param_t *param,
 		pv_value_t *res);
 		pv_value_t *res);