List:Commits« Previous MessageNext Message »
From:Frazer Clement Date:January 28 2009 11:44am
Subject:bzr commit into mysql-5.1-telco-6.4 branch (frazer:3232) Bug#42413
View as plain text  
#At file:///home/frazer/bzr/mysql-5.1-telco-6.4/

 3232 Frazer Clement	2009-01-28
      Bug#42413 : IPv6 connection handling code bugs
      
      Fix some bugs in backport of IPv6 code from mysql-6.0.
      
      Also, unrelated Ndb Version fix to configure.in
modified:
  configure.in
  sql/hostname.cc
  sql/mysqld.cc

per-file messages:
  configure.in
    Align version variables with version string
  sql/hostname.cc
    Remove unneeded 'address-of' operators
  sql/mysqld.cc
    Correct iteration over address info list.
=== modified file 'configure.in'
--- a/configure.in	2009-01-23 15:04:54 +0000
+++ b/configure.in	2009-01-28 11:43:49 +0000
@@ -15,7 +15,7 @@ AM_CONFIG_HEADER([include/config.h:confi
 
 NDB_VERSION_MAJOR=6
 NDB_VERSION_MINOR=4
-NDB_VERSION_BUILD=1
+NDB_VERSION_BUILD=2
 NDB_VERSION_STATUS="-beta"
 
 PROTOCOL_VERSION=10

=== modified file 'sql/hostname.cc'
--- a/sql/hostname.cc	2009-01-15 15:19:31 +0000
+++ b/sql/hostname.cc	2009-01-28 11:43:49 +0000
@@ -88,14 +88,14 @@ static void add_hostname(struct sockaddr
   {
     VOID(pthread_mutex_lock(&hostname_cache->lock));
     host_entry *entry;
-    if (!(entry=(host_entry*) hostname_cache->search((uchar*) &in,0)))
+    if (!(entry=(host_entry*) hostname_cache->search((uchar*) in,0)))
     {
       uint length=name ? (uint) strlen(name) : 0;
 
       if ((entry=(host_entry*) malloc(sizeof(host_entry)+length+1)))
       {
 	char *new_name;
-	memcpy_fixed(&entry->ip, &in, sizeof(struct sockaddr_storage));
+	memcpy_fixed(&entry->ip, in, sizeof(struct sockaddr_storage));
 	if (length)
 	  memcpy(new_name= (char *) (entry+1), name, length+1);
 	else
@@ -119,7 +119,7 @@ void inc_host_errors(struct sockaddr_sto
 {
   VOID(pthread_mutex_lock(&hostname_cache->lock));
   host_entry *entry;
-  if ((entry=(host_entry*) hostname_cache->search((uchar*) &in,0)))
+  if ((entry=(host_entry*) hostname_cache->search((uchar*) in,0)))
     entry->errors++;
   VOID(pthread_mutex_unlock(&hostname_cache->lock));
 }
@@ -128,7 +128,7 @@ void reset_host_errors(struct sockaddr_s
 {
   VOID(pthread_mutex_lock(&hostname_cache->lock));
   host_entry *entry;
-  if ((entry=(host_entry*) hostname_cache->search((uchar*) &in,0)))
+  if ((entry=(host_entry*) hostname_cache->search((uchar*) in,0)))
     entry->errors=0;
   VOID(pthread_mutex_unlock(&hostname_cache->lock));
 }
@@ -175,7 +175,7 @@ char * ip_to_hostname(struct sockaddr_st
   if (!(specialflag & SPECIAL_NO_HOST_CACHE))
   {
     VOID(pthread_mutex_lock(&hostname_cache->lock));
-    if ((entry=(host_entry*) hostname_cache->search((uchar*) &in,0)))
+    if ((entry=(host_entry*) hostname_cache->search((uchar*) in,0)))
     {
       if (entry->hostname)
 	name=my_strdup(entry->hostname,MYF(0));

=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc	2009-01-23 10:10:40 +0000
+++ b/sql/mysqld.cc	2009-01-28 11:43:49 +0000
@@ -1573,7 +1573,7 @@ static void network_init(void)
 
   if (mysqld_port != 0 && !opt_disable_networking && !opt_bootstrap)
   {
-    struct addrinfo *ai, *a;
+    struct addrinfo *addrlist, *addr;
     struct addrinfo hints;
     int error;  
     DBUG_PRINT("general",("IP Socket is %d",mysqld_port));
@@ -1584,7 +1584,7 @@ static void network_init(void)
     hints.ai_family= AF_UNSPEC;
 
     my_snprintf(port_buf, NI_MAXSERV, "%d", mysqld_port);
-    error= getaddrinfo(my_bind_addr_str, port_buf, &hints, &ai);
+    error= getaddrinfo(my_bind_addr_str, port_buf, &hints, &addrlist);
     if (error != 0)
     {
       DBUG_PRINT("error",("Got error: %d from getaddrinfo()", error));
@@ -1592,10 +1592,10 @@ static void network_init(void)
       unireg_abort(1);				/* purecov: tested */
     }
 
-    for (a = ai; a != NULL; a = ai->ai_next)
+    for (addr = addrlist; addr != NULL; addr = addr->ai_next)
     {
-      ip_sock= my_socket_create(ai->ai_family, ai->ai_socktype,
-                                ai->ai_protocol);
+      ip_sock= my_socket_create(addr->ai_family, addr->ai_socktype,
+                                addr->ai_protocol);
       if (my_socket_valid(ip_sock))
         break;
     }
@@ -1620,7 +1620,7 @@ static void network_init(void)
        listen on both IPv6 and IPv4 wildcard addresses.
        Turn off IPV6_V6ONLY option.
      */
-    if (a->ai_family == AF_INET6)
+    if (addr->ai_family == AF_INET6)
     {
       int enable= 0;
       DBUG_PRINT("info",("Clearing IPV6_ONLY socket option"));
@@ -1638,7 +1638,7 @@ static void network_init(void)
     */
     for (waited= 0, retry= 1; ; retry++, waited+= this_wait)
     {
-      if (((ret= my_bind(ip_sock, ai->ai_addr, ai->ai_addrlen)) >= 0 ) ||
+      if (((ret= my_bind(ip_sock, addr->ai_addr, addr->ai_addrlen)) >= 0 ) ||
           (socket_errno != SOCKET_EADDRINUSE) ||
           (waited >= mysqld_port_timeout))
         break;
@@ -1646,7 +1646,7 @@ static void network_init(void)
       this_wait= retry * retry / 3 + 1;
       sleep(this_wait);
     }
-    freeaddrinfo(ai);
+    freeaddrinfo(addrlist);
     if (ret < 0)
     {
       DBUG_PRINT("error",("Got error: %d from bind",socket_errno));

Thread
bzr commit into mysql-5.1-telco-6.4 branch (frazer:3232) Bug#42413Frazer Clement28 Jan