Browse Source

received test functionalized for sanity and exporting to nathelper
uac_nat_test

Jiri Kuthan 22 years ago
parent
commit
0b15425f8d
2 changed files with 23 additions and 13 deletions
  1. 20 13
      msg_translator.c
  2. 3 0
      msg_translator.h

+ 20 - 13
msg_translator.c

@@ -53,6 +53,7 @@
  *             build_req_fomr_sip_req no longer adds 1 for ipv6 via parameter
  *              position calculations ([] are part of host.s now) (andrei)
  * 2003-10-02  via+lump dst address/port can be set to preset values (andrei)
+ * 2003-10-08 receive_test function-alized (jiri)
  *
  */
 /* Via special params:
@@ -212,6 +213,22 @@ static int check_via_address(struct ip_addr* ip, str *name,
 }
 
 
+/* check if IP address in Via != source IP address of signaling */
+int received_test( struct sip_msg *msg )
+{
+	char backup;
+	int rcvd;
+
+	/* zero-terminate hostname temporarily in case DNS resolver is used */
+	backup = msg->via1->host.s[msg->via1->host.len];
+	rcvd=msg->via1->received
+			|| check_via_address(&msg->rcv.src_ip, &msg->via1->host,
+							msg->via1->port, received_dns);
+	msg->via1->host.s[msg->via1->host.len] = backup;
+	return rcvd;
+}
+
+
 static char * warning_builder( struct sip_msg *msg, unsigned int *returned_len)
 {
 	static char buf[MAX_WARNING_LEN];
@@ -1264,9 +1281,7 @@ skip_clen:
 		goto error00;
 	}
 	/* check if received needs to be added */
-	if ( msg->via1->received || 
-			check_via_address(&msg->rcv.src_ip, &msg->via1->host, 
-									msg->via1->port, received_dns) ){
+	if ( received_test(msg) ) { 
 		if ((received_buf=received_builder(msg,&received_len))==0){
 			LOG(L_ERR, "ERROR: build_req_buf_from_sip_req:"
 							" received_builder failed\n");
@@ -1540,7 +1555,6 @@ error:
 }
 
 
-
 char * build_res_buf_from_sip_req( unsigned int code, char *text ,str *new_tag,
 		struct sip_msg* msg, unsigned int *returned_len, struct bookmark *bmark)
 {
@@ -1559,7 +1573,6 @@ char * build_res_buf_from_sip_req( unsigned int code, char *text ,str *new_tag,
 	char *after_body;
 	str  to_tag;
 	char *totags;
-	int rcvd;
 
 	body = 0;
 	buf=0;
@@ -1580,14 +1593,8 @@ char * build_res_buf_from_sip_req( unsigned int code, char *text ,str *new_tag,
 	len = 0;
 
 	/* check if received needs to be added */
-	backup = msg->via1->host.s[msg->via1->host.len];
-	msg->via1->host.s[msg->via1->host.len] = 0;
-	rcvd=msg->via1->received 
-			|| check_via_address(&msg->rcv.src_ip, &msg->via1->host, 
-						msg->via1->port, received_dns);
-	msg->via1->host.s[msg->via1->host.len] = backup;
-	if (rcvd) {
-		if ((received.s=received_builder(msg,&received.len))==0) {
+	if (received_test(msg)) {
+		if ((received_buf=received_builder(msg,&received_len))==0) {
 			LOG(L_ERR, "ERROR: build_res_buf_from_sip_req: "
 				"alas, received_builder failed\n");
 			goto error00;

+ 3 - 0
msg_translator.h

@@ -30,6 +30,7 @@
  *             ACK/200 tag matching
  *
  * 2003-03-01 VOICE_MAIL defs removed (jiri)
+ * 2003-10-08 receive_test function-alized (jiri)
  */
 
 
@@ -113,5 +114,7 @@ int branch_builder( unsigned int hash_index,
 	/* output value: string and actual length */
 	char *branch_str, int *len );
 
+/* check if IP address in Via != source IP address of signaling */
+int received_test( struct sip_msg *msg );
 
 #endif