Quellcode durchsuchen

- insensitive case comparisons for ipv6 addresses

Andrei Pelinescu-Onciul vor 23 Jahren
Ursprung
Commit
cf5f65d6f8
4 geänderte Dateien mit 18 neuen und 6 gelöschten Zeilen
  1. 7 1
      forward.c
  2. 7 2
      msg_translator.c
  3. 3 2
      parser/parse_to.c
  4. 1 1
      parser/parse_via.c

+ 7 - 1
forward.c

@@ -207,8 +207,14 @@ int forward_reply(struct sip_msg* msg)
 					sock_info[r].name.len, sock_info[r].name.s
 				);
 			if ( (msg->via1->host.len==sock_info[r].name.len) && 
+	#ifdef USE_IPV6
+					(strncasecmp(msg->via1->host.s, sock_info[r].name.s,
+								 sock_info[r].name.len)==0) /*slower*/
+	#else
 					(memcmp(msg->via1->host.s, sock_info[r].name.s, 
-										sock_info[r].name.len)==0) )
+										sock_info[r].name.len)==0)
+	#endif
+					)
 				break;
 		}
 		if (r==sock_no){

+ 7 - 2
msg_translator.c

@@ -61,8 +61,13 @@ int check_address(struct ip_addr* ip, char *name, int resolver)
 	s=ip_addr2a(ip);
 	if (s){
 		DBG("check_address(%s, %s, %d)\n", ip_addr2a(ip), name, resolver);
-		if (strcmp(name, s)==0)
-			return 0;
+	#ifdef USE_IPV6
+		if ((ip->af==AF_INET6) && (strcasecmp(name, s)==0))
+				return 0;
+		else
+	#endif
+			if (strcmp(name, s)==0)
+				return 0;
 	}else{
 		LOG(L_CRIT, "check_address: BUG: could not convert ip address\n");
 		return -1;

+ 3 - 2
parser/parse_to.c

@@ -44,8 +44,9 @@ enum {
 
 
 
-static inline char* parse_to_param(char *buffer, char *end, struct to_body *to_b,
-				   int *returned_status)
+static /*inline*/ char* parse_to_param(char *buffer, char *end,
+					struct to_body *to_b,
+					int *returned_status)
 {
 	struct to_param *param;
 	int status;

+ 1 - 1
parser/parse_via.c

@@ -75,7 +75,7 @@ enum {
  * output state = L_PARAM or F_PARAM or END_OF_HEADER
  * (and saved_state= last state); everything else => error 
  */
-static inline char* parse_via_param(char* p, char* end, int* pstate, 
+static /*inline*/ char* parse_via_param(char* p, char* end, int* pstate, 
 				    int* psaved_state, struct via_param* param)
 {
 	char* tmp;