From c172f9f8bb079be1329cd686e391e0a8566be46b Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Mon, 26 Feb 2024 12:03:58 +0100 Subject: [PATCH] Use preprocessor to check for AI_V4MAPPED, AI_ALL and AI_IDN The preprocessor macros defined in some header can be checked, using Autoconf's AC_COMPILE_IFELSE, or with simpler AC_CHECK_DECL(S), or even better and simpler directly in the C code. --- ext/sockets/config.m4 | 39 ----------------------------------- ext/sockets/sockaddr_conv.c | 2 +- ext/sockets/sockets.stub.php | 6 +++--- ext/sockets/sockets_arginfo.h | 10 ++++----- 4 files changed, 9 insertions(+), 48 deletions(-) diff --git a/ext/sockets/config.m4 b/ext/sockets/config.m4 index 74fe477f308b0..17e4e7129a413 100644 --- a/ext/sockets/config.m4 +++ b/ext/sockets/config.m4 @@ -12,45 +12,6 @@ if test "$PHP_SOCKETS" != "no"; then dnl Check for field ss_family in sockaddr_storage (missing in AIX until 5.3) AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family],,,[#include ]) - dnl Check for AI_V4MAPPED flag - AC_CACHE_CHECK([if getaddrinfo supports AI_V4MAPPED],[ac_cv_gai_ai_v4mapped], - [ - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include - ]], [[int flag = AI_V4MAPPED;]])], - [ac_cv_gai_ai_v4mapped=yes], [ac_cv_gai_ai_v4mapped=no]) - ]) - - if test "$ac_cv_gai_ai_v4mapped" = yes; then - AC_DEFINE(HAVE_AI_V4MAPPED,1,[Whether you have AI_V4MAPPED]) - fi - - dnl Check for AI_ALL flag - AC_CACHE_CHECK([if getaddrinfo supports AI_ALL],[ac_cv_gai_ai_all], - [ - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include - ]], [[int flag = AI_ALL;]])], - [ac_cv_gai_ai_all=yes], [ac_cv_gai_ai_all=no]) - ]) - - if test "$ac_cv_gai_ai_all" = yes; 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_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include - ]], [[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 - dnl Check for struct ucred. Checking the header is not enough (DragonFlyBSD). AC_CHECK_TYPES([struct ucred],,, [#ifndef _GNU_SOURCE diff --git a/ext/sockets/sockaddr_conv.c b/ext/sockets/sockaddr_conv.c index 9137b25585921..5f5004fa42e32 100644 --- a/ext/sockets/sockaddr_conv.c +++ b/ext/sockets/sockaddr_conv.c @@ -29,7 +29,7 @@ int php_set_inet6_addr(struct sockaddr_in6 *sin6, char *string, php_socket *php_ memset(&hints, 0, sizeof(struct addrinfo)); hints.ai_family = AF_INET6; -#if HAVE_AI_V4MAPPED +#ifdef AI_V4MAPPED hints.ai_flags = AI_V4MAPPED | AI_ADDRCONFIG; #else hints.ai_flags = AI_ADDRCONFIG; diff --git a/ext/sockets/sockets.stub.php b/ext/sockets/sockets.stub.php index 19aeb3fbb8c0a..b6da6b020ce22 100644 --- a/ext/sockets/sockets.stub.php +++ b/ext/sockets/sockets.stub.php @@ -1591,14 +1591,14 @@ * @cvalue AI_NUMERICHOST */ const AI_NUMERICHOST = UNKNOWN; -#if HAVE_AI_V4MAPPED +#ifdef AI_V4MAPPED /** * @var int * @cvalue AI_V4MAPPED */ const AI_V4MAPPED = UNKNOWN; #endif -#if HAVE_AI_ALL +#ifdef AI_ALL /** * @var int * @cvalue AI_ALL @@ -1610,7 +1610,7 @@ * @cvalue AI_ADDRCONFIG */ const AI_ADDRCONFIG = UNKNOWN; -#if HAVE_AI_IDN +#ifdef AI_IDN /** * @var int * @cvalue AI_IDN diff --git a/ext/sockets/sockets_arginfo.h b/ext/sockets/sockets_arginfo.h index 2e03ad7f4d116..11f0643451373 100644 --- a/ext/sockets/sockets_arginfo.h +++ b/ext/sockets/sockets_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 5aebcb542405e392cbe7129eac964826f61f7dac */ + * Stub hash: ec04de98f14d553e10da9f7f6de7ec281215ef44 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_socket_select, 0, 4, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(1, read, IS_ARRAY, 1) @@ -935,17 +935,17 @@ static void register_sockets_symbols(int module_number) REGISTER_LONG_CONSTANT("AI_PASSIVE", AI_PASSIVE, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("AI_CANONNAME", AI_CANONNAME, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("AI_NUMERICHOST", AI_NUMERICHOST, CONST_PERSISTENT); -#if HAVE_AI_V4MAPPED +#if defined(AI_V4MAPPED) REGISTER_LONG_CONSTANT("AI_V4MAPPED", AI_V4MAPPED, CONST_PERSISTENT); #endif -#if HAVE_AI_ALL +#if defined(AI_ALL) REGISTER_LONG_CONSTANT("AI_ALL", AI_ALL, CONST_PERSISTENT); #endif REGISTER_LONG_CONSTANT("AI_ADDRCONFIG", AI_ADDRCONFIG, CONST_PERSISTENT); -#if HAVE_AI_IDN +#if defined(AI_IDN) REGISTER_LONG_CONSTANT("AI_IDN", AI_IDN, CONST_PERSISTENT); #endif -#if HAVE_AI_IDN +#if defined(AI_IDN) REGISTER_LONG_CONSTANT("AI_CANONIDN", AI_CANONIDN, CONST_PERSISTENT); #endif #if defined(AI_NUMERICSERV)