#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#42413 | Frazer Clement | 28 Jan |