From: Alexander Nozdrin Date: April 5 2011 3:46pm Subject: bzr commit into mysql-5.5 branch (alexander.nozdrin:3421) Bug#12325375 List-Archive: http://lists.mysql.com/commits/134734 X-Bug: 12325375 Message-Id: <201104051546.p35FklkS015713@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0873322550503052470==" --===============0873322550503052470== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/alik/MySQL/bzr/00/bug12325375/mysql-5.5-bug12325375/ based on revid:georgi.kodinov@stripped 3421 Alexander Nozdrin 2011-04-05 A patch for Bug#12325375: THE SERVER ON WINXP DOES NOT ALLOW CONNECTIONS IF NO DNS-SERVER AVAILABLE. The thing is that on Windows XP getnameinfo() returns WSANO_DATA when hostname-lookup is not available. The problem was that this error code was treated as serious error and the client connection got rejected. The fix is to treat WSANO_DATA as EAI_NONAME, i.e. log a warning and allow client with unresolved host name. modified: include/violite.h sql/hostname.cc vio/viosocket.c === modified file 'include/violite.h' --- a/include/violite.h 2010-06-07 14:01:39 +0000 +++ b/include/violite.h 2011-04-05 15:46:41 +0000 @@ -93,6 +93,8 @@ ssize_t vio_pending(Vio *vio); my_bool vio_get_normalized_ip_string(const struct sockaddr *addr, int addr_length, char *ip_string, size_t ip_string_size); +my_bool vio_is_no_name_error(int err_code); + int vio_getnameinfo(const struct sockaddr *sa, char *hostname, size_t hostname_size, char *port, size_t port_size, === modified file 'sql/hostname.cc' --- a/sql/hostname.cc 2010-07-23 20:17:55 +0000 +++ b/sql/hostname.cc 2011-04-05 15:46:41 +0000 @@ -366,7 +366,7 @@ bool ip_to_hostname(struct sockaddr_stor err_code= vio_getnameinfo(ip, hostname_buffer, NI_MAXHOST, NULL, 0, NI_NAMEREQD); - if (err_code == EAI_NONAME) + if (vio_is_no_name_error(err_code)) { /* There is no reverse address mapping for the IP address. A host name === modified file 'vio/viosocket.c' --- a/vio/viosocket.c 2010-08-16 12:50:27 +0000 +++ b/vio/viosocket.c 2011-04-05 15:46:41 +0000 @@ -1060,6 +1060,34 @@ ssize_t vio_pending(Vio *vio) /** + Checks if the error code, returned by vio_getnameinfo(), means it was the + "No-name" error. + + Windows-specific note: getnameinfo() returns WSANO_DATA instead of + EAI_NODATA or EAI_NONAME when no reverse mapping is available at the host + (i.e. Windows can't get hostname by IP-address). This error should be + treated as EAI_NONAME. + + @return if the error code is actually EAI_NONAME. + @retval true if the error code is EAI_NONAME. + @retval false otherwise. +*/ + +my_bool vio_is_no_name_error(int err_code) +{ +#ifdef __WIN__ + + return err_code == WSANO_DATA || err_code == EAI_NONAME; + +#else + + return err_code == EAI_NONAME; + +#endif +} + + +/** This is a wrapper for the system getnameinfo(), because different OS differ in the getnameinfo() implementation: - Solaris 10 requires that the 2nd argument (salen) must match the --===============0873322550503052470== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/alexander.nozdrin@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: alexander.nozdrin@stripped\ # 29ggqe5fui6xw0qm # target_branch: file:///home/alik/MySQL/bzr/00/bug12325375/mysql-5.5-\ # bug12325375/ # testament_sha1: ffa832a869f07e70e32f4503c8d897deaa1ffc2d # timestamp: 2011-04-05 19:46:45 +0400 # base_revision_id: georgi.kodinov@stripped\ # 9olq0qtkpdgm4rqu # # Begin bundle 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 --===============0873322550503052470==--