diff options
author | Julius Goryavsky <julius.goryavsky@mariadb.com> | 2022-12-08 15:12:08 +0100 |
---|---|---|
committer | Julius Goryavsky <julius.goryavsky@mariadb.com> | 2022-12-08 15:12:08 +0100 |
commit | 76c98223c5a700724ca12dee99b94c2736c4f8b5 (patch) | |
tree | 56d059f29f9cf98deb302b6d0a0ef1533456eecb | |
parent | dd5f4b3625def2ee74d8f9a6b55d1368ba597a84 (diff) | |
download | mariadb-git-bb-10.6-MDEV-6536-addendum.tar.gz |
MDEV-6536 addendum: special handling of localhostbb-10.6-MDEV-6536-addendum
Linux and glibc return only the local ipv4 address
for localhost unless an alternative ipv6 address is
explicitly entered in /etc/hosts...
-rw-r--r-- | mysql-test/main/bind_address_resolution.result | 3 | ||||
-rw-r--r-- | mysql-test/main/bind_address_resolution.test | 7 | ||||
-rw-r--r-- | sql/mysqld.cc | 6 |
3 files changed, 10 insertions, 6 deletions
diff --git a/mysql-test/main/bind_address_resolution.result b/mysql-test/main/bind_address_resolution.result index d054c333902..1ba0ccb82a4 100644 --- a/mysql-test/main/bind_address_resolution.result +++ b/mysql-test/main/bind_address_resolution.result @@ -5,6 +5,9 @@ a connect con2,127.0.0.1,root,,test; SELECT * FROM t; a +connect con3,::1,root,,test; +SELECT * FROM t; +a connection default; DROP TABLE t; disconnect con1; diff --git a/mysql-test/main/bind_address_resolution.test b/mysql-test/main/bind_address_resolution.test index ab4d8e8e463..a635b00ea95 100644 --- a/mysql-test/main/bind_address_resolution.test +++ b/mysql-test/main/bind_address_resolution.test @@ -10,11 +10,8 @@ CREATE TABLE t (a TEXT); SELECT * FROM t; --connect(con2,127.0.0.1,root,,test) SELECT * FROM t; -# Temporary disable. -# Some cloud-init services don't resolve localhost->::1 -# bb - kvm-asan, kvm-deb-focal-amd64, kvm-deb-groovy-amd64 -#--connect(con3,::1,root,,test) -#SELECT * FROM t; +--connect(con3,::1,root,,test) +SELECT * FROM t; --connection default DROP TABLE t; --disconnect con1 diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 988ffd678f4..81d4bee3bf0 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2269,8 +2269,12 @@ static void activate_tcp_port(uint port, hints.ai_socktype= SOCK_STREAM; hints.ai_family= AF_UNSPEC; - if (my_bind_addr_str && strcmp(my_bind_addr_str, "*") == 0) + if (my_bind_addr_str && (strcmp(my_bind_addr_str, "*") == 0 || + strcmp(my_bind_addr_str, "localhost") == 0)) real_bind_addr_str= NULL; // windows doesn't seem to support * here + // and linux returns only ipv4 for localhost + // unless /etc/host is edited to add an ipv6 + // alternative address. else real_bind_addr_str= my_bind_addr_str; |