mirror of
https://github.com/MariaDB/server.git
synced 2026-05-06 23:25:34 +02:00
Fix for Bug#52923 (Inadequate documentation of "Can't get hostname for your address" error).
The thing is that on some platforms (e.g. Mac OS X) sockaddr_in / sockaddr_in6 contain a non-standard field (sin_len / sin6_len), that must be set. The problem was that only standard fields were set, thus getnameinfo() returned EAI_SYSTEM instead of EAI_NONAME. The fix is to introduce configure-time checks (for GNU auto-tools and CMake) for those additional fields and to set them if they are available.
This commit is contained in:
parent
44486663e2
commit
9003fb7cad
4 changed files with 89 additions and 3 deletions
|
|
@ -1000,6 +1000,21 @@ IF(NOT HAVE_SOCKADDR_STORAGE_SS_FAMILY)
|
|||
SET(ss_family __ss_family)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
#
|
||||
# Check if struct sockaddr_in::sin_len is available.
|
||||
#
|
||||
|
||||
CHECK_STRUCT_HAS_MEMBER("struct sockaddr_in" sin_len
|
||||
"${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_SOCKADDR_IN_SIN_LEN)
|
||||
|
||||
#
|
||||
# Check if struct sockaddr_in6::sin6_len is available.
|
||||
#
|
||||
|
||||
CHECK_STRUCT_HAS_MEMBER("struct sockaddr_in6" sin6_len
|
||||
"${CMAKE_EXTRA_INCLUDE_FILES}" HAVE_SOCKADDR_IN6_SIN6_LEN)
|
||||
|
||||
SET(CMAKE_EXTRA_INCLUDE_FILES)
|
||||
|
||||
CHECK_STRUCT_HAS_MEMBER("struct dirent" d_ino "dirent.h" STRUCT_DIRENT_HAS_D_INO)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue