]> granicus.if.org Git - php/commitdiff
ext/sockets: make AI_IDN usage optional
authorThomas Petazzoni <thomas.petazzoni@bootlin.com>
Mon, 26 Feb 2018 18:06:40 +0000 (19:06 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Sun, 11 Mar 2018 15:35:17 +0000 (16:35 +0100)
AI_IDN is not supported by all C libraries (uClibc, musl), so make it
optional, like AI_ALL.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
ext/sockets/config.m4
ext/sockets/sockets.c

index fe7d22a10a69552dd7f81af7cb257a7cfad9d82c..2bf6a2bd110b62e3c5c4cc31b783197200c02641 100644 (file)
@@ -69,6 +69,19 @@ if test "$PHP_SOCKETS" != "no"; then
     AC_DEFINE(HAVE_AI_ALL,1,[Whether you have AI_ALL])
   fi
 
+  dnl Check for AI_IDN flag
+  AC_CACHE_CHECK([if getaddrinfo supports AI_IDN],[ac_cv_gai_ai_idn],
+  [
+    AC_TRY_COMPILE([
+#include <netdb.h>
+  ], [int flag = AI_IDN;],
+     ac_cv_gai_ai_idn=yes, ac_cv_gai_ai_idn=no)
+  ])
+
+  if test "$ac_cv_gai_ai_idn" = yes; then
+    AC_DEFINE(HAVE_AI_IDN,1,[Whether you have AI_IDN])
+  fi
+
   PHP_NEW_EXTENSION([sockets], [sockets.c multicast.c conversions.c sockaddr_conv.c sendrecvmsg.c], [$ext_shared],, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
   PHP_INSTALL_HEADERS([ext/sockets/], [php_sockets.h])
 fi
index b93917d219ffeee881e1e4c288497349c02499ea..8e3fc1be3115f5822946d98d4c8450d50d354dea 100644 (file)
@@ -796,7 +796,7 @@ static PHP_MINIT_FUNCTION(sockets)
        REGISTER_LONG_CONSTANT("AI_ALL",                        AI_ALL,                         CONST_CS | CONST_PERSISTENT);
 #endif
        REGISTER_LONG_CONSTANT("AI_ADDRCONFIG",         AI_ADDRCONFIG,          CONST_CS | CONST_PERSISTENT);
-#ifdef __USE_GNU
+#if HAVE_AI_IDN
        REGISTER_LONG_CONSTANT("AI_IDN",                        AI_IDN,                         CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("AI_CANONIDN",           AI_CANONIDN,            CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("AI_IDN_ALLOW_UNASSIGNED",               AI_IDN_ALLOW_UNASSIGNED, CONST_CS | CONST_PERSISTENT);