Pārlūkot izejas kodu

core: dedicated function to check Via address with source ip

- received_via_test() as alternative to received_test() which looks also
  for rport and received parameters, confusing nat detection tests

(cherry picked from commit 194743bf0de92ae09fdc817e57863f6bdb159539)
Daniel-Constantin Mierla 10 gadi atpakaļ
vecāks
revīzija
7ebf861b27
2 mainītis faili ar 16 papildinājumiem un 2 dzēšanām
  1. 11 1
      msg_translator.c
  2. 5 1
      msg_translator.h

+ 11 - 1
msg_translator.c

@@ -252,7 +252,8 @@ static int check_via_address(struct ip_addr* ip, str *name,
 }
 
 
-/* check if IP address in Via != source IP address of signaling */
+/* check if IP address in Via != source IP address of signaling,
+ * or the sender requires adding rport or received values */
 int received_test( struct sip_msg *msg )
 {
 	int rcvd;
@@ -263,6 +264,15 @@ int received_test( struct sip_msg *msg )
 	return rcvd;
 }
 
+/* check if IP address in Via != source IP address of signaling */
+int received_via_test( struct sip_msg *msg )
+{
+	int rcvd;
+
+	rcvd = (check_via_address(&msg->rcv.src_ip, &msg->via1->host,
+							msg->via1->port, received_dns)!=0);
+	return rcvd;
+}
 
 static char * warning_builder( struct sip_msg *msg, unsigned int *returned_len)
 {

+ 5 - 1
msg_translator.h

@@ -129,9 +129,13 @@ int branch_builder( unsigned int hash_index,
 
 char* id_builder(struct sip_msg* msg, unsigned int *id_len);
 
-/* check if IP address in Via != source IP address of signaling */
+/* check if IP address in Via != source IP address of signaling,
+ * or the sender is asking to set the values for rport or received */
 int received_test( struct sip_msg *msg );
 
+/* check if IP address in Via != source IP address of signaling */
+int received_via_test( struct sip_msg *msg );
+
 /* builds a char* buffer from message headers without body
  * first line is excluded in case of skip_first_line=1
  */