Browse Source

pv: new variable $Rn - return receiving socket name

Daniel-Constantin Mierla 4 năm trước cách đây
mục cha
commit
efe36cf0ba

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

@@ -410,6 +410,9 @@ static pv_export_t mod_pvs[] = {
 	{{"Rut", (sizeof("Rut")-1)}, /* */
 	{{"Rut", (sizeof("Rut")-1)}, /* */
 		PVT_OTHER, pv_get_rcvaddr_uri_full, 0,
 		PVT_OTHER, pv_get_rcvaddr_uri_full, 0,
 		0, 0, 0, 0},
 		0, 0, 0, 0},
+	{{"Rn", (sizeof("Rn")-1)}, /* */
+		PVT_OTHER, pv_get_rcvsname, 0,
+		0, 0, 0, 0},
 	{{"RAi", (sizeof("RAi")-1)}, /* */
 	{{"RAi", (sizeof("RAi")-1)}, /* */
 		PVT_OTHER, pv_get_rcv_advertised_ip, 0,
 		PVT_OTHER, pv_get_rcv_advertised_ip, 0,
 		0, 0, 0, 0},
 		0, 0, 0, 0},

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

@@ -858,6 +858,19 @@ int pv_get_rcvport(struct sip_msg *msg, pv_param_t *param,
 			&msg->rcv.bind_address->port_no_str);
 			&msg->rcv.bind_address->port_no_str);
 }
 }
 
 
+int pv_get_rcvsname(struct sip_msg *msg, pv_param_t *param,
+		pv_value_t *res)
+{
+	if(msg==NULL)
+		return -1;
+
+	if(msg->rcv.bind_address==NULL
+			|| msg->rcv.bind_address->sockname.s==NULL)
+		return pv_get_null(msg, param, res);
+
+	return pv_get_strval(msg, param, res, &msg->rcv.bind_address->sockname);
+}
+
 int pv_get_rcvaddr_uri_helper(struct sip_msg *msg, pv_param_t *param,
 int pv_get_rcvaddr_uri_helper(struct sip_msg *msg, pv_param_t *param,
 		int tmode, pv_value_t *res)
 		int tmode, pv_value_t *res)
 {
 {

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

@@ -163,6 +163,9 @@ int pv_get_rcvaddr_uri(struct sip_msg *msg, pv_param_t *param,
 int pv_get_rcvaddr_uri_full(struct sip_msg *msg, pv_param_t *param,
 int pv_get_rcvaddr_uri_full(struct sip_msg *msg, pv_param_t *param,
 		pv_value_t *res);
 		pv_value_t *res);
 
 
+int pv_get_rcvsname(struct sip_msg *msg, pv_param_t *param,
+		pv_value_t *res);
+
 int pv_get_rcv_advertised_ip(struct sip_msg *msg, pv_param_t *param,
 int pv_get_rcv_advertised_ip(struct sip_msg *msg, pv_param_t *param,
 		pv_value_t *res);
 		pv_value_t *res);