summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@bootlin.com>2018-02-26 19:06:40 +0100
committerNikita Popov <nikita.ppv@gmail.com>2018-03-11 16:35:17 +0100
commit8489ecefd3de180d1944abfce2446a61d24ed3b3 (patch)
treeb5db4578b55cd11fdbcaab42cd546375e4efe5bf
parentd34ab3a53c79aca655dd0d588745d2599e9fc6d5 (diff)
downloadphp-git-8489ecefd3de180d1944abfce2446a61d24ed3b3.tar.gz
ext/sockets: make AI_IDN usage optional
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>
-rw-r--r--ext/sockets/config.m413
-rw-r--r--ext/sockets/sockets.c2
2 files changed, 14 insertions, 1 deletions
diff --git a/ext/sockets/config.m4 b/ext/sockets/config.m4
index fe7d22a10a..2bf6a2bd11 100644
--- a/ext/sockets/config.m4
+++ b/ext/sockets/config.m4
@@ -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
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index b93917d219..8e3fc1be31 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -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);