Commit f830fa99489 for php.net

commit f830fa994896c972d4528bb23156ec65153c1805
Author: David CARLIER <devnexen@gmail.com>
Date:   Sat Mar 7 14:09:49 2026 +0000

    Sockets refactoring 2026 (#21365)

    ext/sockets: internal refactorings.

    - remove redundant memsets and faster socket unix path copy.
    - simplify php_open_listen_sock.
    - use INADDR_ANY directly instead of resolving via gethostbyname.
    - remove redundant memsets in conversions.

diff --git a/ext/sockets/conversions.c b/ext/sockets/conversions.c
index b4a13f39cd9..1c735ef5e6d 100644
--- a/ext/sockets/conversions.c
+++ b/ext/sockets/conversions.c
@@ -571,7 +571,6 @@ static void to_zval_read_sin_addr(const char *data, zval *zv, res_context *ctx)
 	const struct in_addr *addr = (const struct in_addr *)data;
 	socklen_t size = INET_ADDRSTRLEN;
 	zend_string *str = zend_string_alloc(size - 1, 0);
-	memset(ZSTR_VAL(str), '\0', size);

 	ZVAL_NEW_STR(zv, str);

@@ -581,7 +580,7 @@ static void to_zval_read_sin_addr(const char *data, zval *zv, res_context *ctx)
 		return;
 	}

-	Z_STRLEN_P(zv) = strlen(Z_STRVAL_P(zv));
+	Z_STR_P(zv) = zend_string_truncate(Z_STR_P(zv), strlen(Z_STRVAL_P(zv)), 0);
 }
 static const field_descriptor descriptors_sockaddr_in[] = {
 		{"family", sizeof("family"), false, offsetof(struct sockaddr_in, sin_family), from_zval_write_sa_family, to_zval_read_sa_family},
@@ -622,8 +621,6 @@ static void to_zval_read_sin6_addr(const char *data, zval *zv, res_context *ctx)
 	socklen_t size = INET6_ADDRSTRLEN;
 	zend_string *str = zend_string_alloc(size - 1, 0);

-	memset(ZSTR_VAL(str), '\0', size);
-
 	ZVAL_NEW_STR(zv, str);

 	if (inet_ntop(AF_INET6, addr, Z_STRVAL_P(zv), size) == NULL) {
@@ -632,7 +629,7 @@ static void to_zval_read_sin6_addr(const char *data, zval *zv, res_context *ctx)
 		return;
 	}

-	Z_STRLEN_P(zv) = strlen(Z_STRVAL_P(zv));
+	Z_STR_P(zv) = zend_string_truncate(Z_STR_P(zv), strlen(Z_STRVAL_P(zv)), 0);
 }
 static const field_descriptor descriptors_sockaddr_in6[] = {
 		{"family", sizeof("family"), false, offsetof(struct sockaddr_in6, sin6_family), from_zval_write_sa_family, to_zval_read_sa_family},
diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c
index 838e99cdc13..464bd87d5d3 100644
--- a/ext/sockets/sockets.c
+++ b/ext/sockets/sockets.c
@@ -244,18 +244,9 @@ ZEND_GET_MODULE(sockets)
 static bool php_open_listen_sock(php_socket *sock, unsigned short port, int backlog) /* {{{ */
 {
 	struct sockaddr_in  la = {0};
-	struct hostent	    *hp;

-#ifndef PHP_WIN32
-	if ((hp = php_network_gethostbyname("0.0.0.0")) == NULL) {
-#else
-	if ((hp = php_network_gethostbyname("localhost")) == NULL) {
-#endif
-		return false;
-	}
-
-	memcpy((char *) &la.sin_addr, hp->h_addr, hp->h_length);
-	la.sin_family = hp->h_addrtype;
+	la.sin_addr.s_addr = htonl(INADDR_ANY);
+	la.sin_family = AF_INET;
 	la.sin_port = htons(port);

 	sock->bsd_socket = socket(PF_INET, SOCK_STREAM, 0);
@@ -1249,8 +1240,6 @@ PHP_FUNCTION(socket_connect)
 				RETURN_THROWS();
 			}

-			memset(&sin6, 0, sizeof(struct sockaddr_in6));
-
 			sin6.sin6_family = AF_INET6;
 			sin6.sin6_port   = htons((unsigned short int)port);

@@ -1629,7 +1618,6 @@ PHP_FUNCTION(socket_recvfrom)
 			ZSTR_LEN(recv_buf) = retval;
 			ZSTR_VAL(recv_buf)[ZSTR_LEN(recv_buf)] = '\0';

-			memset(addrbuf, 0, INET6_ADDRSTRLEN);
 			inet_ntop(AF_INET6, &sin6.sin6_addr,  addrbuf, sizeof(addrbuf));

 			ZEND_TRY_ASSIGN_REF_NEW_STR(arg2, recv_buf);
@@ -1732,7 +1720,7 @@ PHP_FUNCTION(socket_sendto)
 			}

 			s_un.sun_family = AF_UNIX;
-			snprintf(s_un.sun_path, sizeof(s_un.sun_path), "%s", ZSTR_VAL(addr));
+			memcpy(s_un.sun_path, ZSTR_VAL(addr), ZSTR_LEN(addr) + 1);

 			retval = sendto(php_sock->bsd_socket, buf, ((size_t)len > buf_len) ? buf_len : (size_t)len,	flags, (struct sockaddr *) &s_un, SUN_LEN(&s_un));
 			break;
diff --git a/ext/sockets/tests/socket_create_listen-win32.phpt b/ext/sockets/tests/socket_create_listen-win32.phpt
index 74e6d73212f..bbdc3b1ee9d 100644
--- a/ext/sockets/tests/socket_create_listen-win32.phpt
+++ b/ext/sockets/tests/socket_create_listen-win32.phpt
@@ -15,7 +15,7 @@
 var_dump($addr, $port);
 ?>
 --EXPECT--
-string(9) "127.0.0.1"
+string(7) "0.0.0.0"
 int(31338)
 --CREDITS--
 Till Klampaeckel, till@php.net