From b6db3d37640e5cffe1e0b424898a8606dc4b5a85 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Sat, 22 Apr 2023 17:44:42 +0100 Subject: [PATCH] ext/sockets: addig Linux's IP_BIND_ADDRESS_NO_PORT. Delay ephemeral port number attribution at connect time rather than at bind's one. --- UPGRADING | 1 + ext/sockets/sockets.stub.php | 7 +++++++ ext/sockets/sockets_arginfo.h | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/UPGRADING b/UPGRADING index a22bc46328e90..70fb94f612e4c 100644 --- a/UPGRADING +++ b/UPGRADING @@ -231,6 +231,7 @@ PHP 8.3 UPGRADE NOTES . SO_SPLICE (OpenBSD only). . TCP_REPAIR (Linux only). . SO_REUSEPORT_LB (FreeBSD only). + . IP_BIND_ADDRESS_NO_PORT (Linux only). ======================================== 11. Changes to INI File Handling diff --git a/ext/sockets/sockets.stub.php b/ext/sockets/sockets.stub.php index c0007a8f938cd..6860cea3aacf2 100644 --- a/ext/sockets/sockets.stub.php +++ b/ext/sockets/sockets.stub.php @@ -642,6 +642,13 @@ * @cvalue IP_MULTICAST_LOOP */ const IP_MULTICAST_LOOP = UNKNOWN; +#ifdef IP_BIND_ADDRESS_NO_PORT +/** + * @var int + * @cvalue IP_BIND_ADDRESS_NO_PORT + */ +const IP_BIND_ADDRESS_NO_PORT = UNKNOWN; +#endif #if HAVE_IPV6 /** * @var int diff --git a/ext/sockets/sockets_arginfo.h b/ext/sockets/sockets_arginfo.h index dbc88406d8f8a..ae9334d6b6743 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: b8ca31ff65d450afac0d7e555311f57193b003c4 */ + * Stub hash: a64427da8198261f528a38c5bf90c673eb5b8282 */ 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) @@ -576,6 +576,9 @@ static void register_sockets_symbols(int module_number) REGISTER_LONG_CONSTANT("IP_MULTICAST_IF", IP_MULTICAST_IF, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("IP_MULTICAST_TTL", IP_MULTICAST_TTL, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("IP_MULTICAST_LOOP", IP_MULTICAST_LOOP, CONST_PERSISTENT); +#if defined(IP_BIND_ADDRESS_NO_PORT) + REGISTER_LONG_CONSTANT("IP_BIND_ADDRESS_NO_PORT", IP_BIND_ADDRESS_NO_PORT, CONST_PERSISTENT); +#endif #if HAVE_IPV6 REGISTER_LONG_CONSTANT("IPV6_MULTICAST_IF", IPV6_MULTICAST_IF, CONST_PERSISTENT); #endif