Commit 8c1e00e379a for php.net

commit 8c1e00e379a2623e834744b5e7ea8e8c79dc6714
Author: Gina Peter Banyard <girgias@php.net>
Date:   Thu Jul 2 23:37:12 2026 +0100

    ext/soap: use zend_string* in php_http.c where possible

diff --git a/ext/soap/php_http.c b/ext/soap/php_http.c
index 5d7485af883..4fe272ea6f1 100644
--- a/ext/soap/php_http.c
+++ b/ext/soap/php_http.c
@@ -19,8 +19,8 @@
 #include "ext/uri/php_uri.h"

 static char *get_http_header_value_nodup(char *headers, char *type, size_t *len);
-static char *get_http_header_value(char *headers, char *type);
-static zend_string *get_http_body(php_stream *socketd, bool close, char *headers);
+static char *get_http_header_value(zend_string *headers, char *type);
+static zend_string *get_http_body(php_stream *socketd, bool close, zend_string *headers);
 static zend_string *get_http_headers(php_stream *socketd);

 #define smart_str_append_const(str, const) \
@@ -946,7 +946,7 @@ bool make_http_soap_request(
 			/* Check to see what HTTP status was sent */
 			http_1_1 = false;
 			http_status = 0;
-			http_version = get_http_header_value(ZSTR_VAL(http_headers), "HTTP/");
+			http_version = get_http_header_value(http_headers, "HTTP/");
 			if (http_version) {
 				char *tmp;

@@ -1070,7 +1070,7 @@ bool make_http_soap_request(
 	if (http_1_1) {
 		http_close = false;
 		if (use_proxy && !use_ssl) {
-			connection = get_http_header_value(ZSTR_VAL(http_headers), "Proxy-Connection:");
+			connection = get_http_header_value(http_headers, "Proxy-Connection:");
 			if (connection) {
 				if (strncasecmp(connection, "close", sizeof("close")-1) == 0) {
 					http_close = true;
@@ -1079,7 +1079,7 @@ bool make_http_soap_request(
 			}
 		}
 		if (http_close == false) {
-			connection = get_http_header_value(ZSTR_VAL(http_headers), "Connection:");
+			connection = get_http_header_value(http_headers, "Connection:");
 			if (connection) {
 				if (strncasecmp(connection, "close", sizeof("close")-1) == 0) {
 					http_close = true;
@@ -1090,7 +1090,7 @@ bool make_http_soap_request(
 	} else {
 		http_close = true;
 		if (use_proxy && !use_ssl) {
-			connection = get_http_header_value(ZSTR_VAL(http_headers), "Proxy-Connection:");
+			connection = get_http_header_value(http_headers, "Proxy-Connection:");
 			if (connection) {
 				if (strncasecmp(connection, "Keep-Alive", sizeof("Keep-Alive")-1) == 0) {
 					http_close = false;
@@ -1099,7 +1099,7 @@ bool make_http_soap_request(
 			}
 		}
 		if (http_close == true) {
-			connection = get_http_header_value(ZSTR_VAL(http_headers), "Connection:");
+			connection = get_http_header_value(http_headers, "Connection:");
 			if (connection) {
 				if (strncasecmp(connection, "Keep-Alive", sizeof("Keep-Alive")-1) == 0) {
 					http_close = false;
@@ -1110,7 +1110,7 @@ bool make_http_soap_request(
 	}


-	http_body = get_http_body(stream, http_close, ZSTR_VAL(http_headers));
+	http_body = get_http_body(stream, http_close, http_headers);
 	if (!http_body) {
 		if (request != buf) {
 			zend_string_release_ex(request, 0);
@@ -1142,7 +1142,7 @@ bool make_http_soap_request(
 	if (http_status >= 300 && http_status < 400) {
 		char *loc;

-		if ((loc = get_http_header_value(ZSTR_VAL(http_headers), "Location:")) != NULL) {
+		if ((loc = get_http_header_value(http_headers, "Location:")) != NULL) {
 			const php_uri_parser *uri_parser = php_uri_get_parser(uri_parser_class);
 			if (uri_parser == NULL) {
 				efree(loc);
@@ -1195,7 +1195,7 @@ bool make_http_soap_request(
 		zval *digest = Z_CLIENT_DIGEST_P(this_ptr);
 		zval *login = Z_CLIENT_LOGIN_P(this_ptr);
 		zval *password = Z_CLIENT_PASSWORD_P(this_ptr);
-		char *auth = get_http_header_value(ZSTR_VAL(http_headers), "WWW-Authenticate:");
+		char *auth = get_http_header_value(http_headers, "WWW-Authenticate:");
 		if (auth && strstr(auth, "Digest") == auth && Z_TYPE_P(digest) != IS_ARRAY
 				&& Z_TYPE_P(login) == IS_STRING && Z_TYPE_P(password) == IS_STRING) {
 			char *s;
@@ -1265,7 +1265,7 @@ bool make_http_soap_request(
 	smart_str_free(&soap_headers_z);

 	/* Check and see if the server even sent a xml document */
-	content_type = get_http_header_value(ZSTR_VAL(http_headers), "Content-Type:");
+	content_type = get_http_header_value(http_headers, "Content-Type:");
 	if (content_type) {
 		char *pos = NULL;
 		int cmplen;
@@ -1295,7 +1295,7 @@ bool make_http_soap_request(
 	}

 	/* Decompress response */
-	content_encoding = get_http_header_value(ZSTR_VAL(http_headers), "Content-Encoding:");
+	content_encoding = get_http_header_value(http_headers, "Content-Encoding:");
 	if (content_encoding) {
 		zval retval;
 		zval params[1];
@@ -1429,12 +1429,12 @@ static char *get_http_header_value_nodup(char *headers, char *type, size_t *len)
 	return NULL;
 }

-static char *get_http_header_value(char *headers, char *type)
+static char *get_http_header_value(zend_string *headers, char *type)
 {
 	size_t len;
 	char *value;

-	value = get_http_header_value_nodup(headers, type, &len);
+	value = get_http_header_value_nodup(ZSTR_VAL(headers), type, &len);

 	if (value) {
 		return estrndup(value, len);
@@ -1443,7 +1443,7 @@ static char *get_http_header_value(char *headers, char *type)
 	return NULL;
 }

-static zend_string* get_http_body(php_stream *stream, bool close, char *headers)
+static zend_string* get_http_body(php_stream *stream, bool close, zend_string *headers)
 {
 	zend_string *http_buf = NULL;
 	char *header;