mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.2' into PHP-8.3
* PHP-8.2: Fix bug #47925: PHPClient can't decompress response (transposed uncompress methods?)
This commit is contained in:
3
NEWS
3
NEWS
@@ -12,6 +12,9 @@ PHP NEWS
|
||||
. Fixed bug GH-14267 (opcache.jit=off does not allow enabling JIT at runtime).
|
||||
(ilutov)
|
||||
|
||||
- Soap:
|
||||
. Fixed bug #47925 (PHPClient can't decompress response). (nielsdos)
|
||||
|
||||
- Sodium:
|
||||
. Fix memory leaks in ext/sodium on failure of some functions. (nielsdos)
|
||||
|
||||
|
||||
@@ -1258,13 +1258,13 @@ try_again:
|
||||
|
||||
if ((strcmp(content_encoding,"gzip") == 0 ||
|
||||
strcmp(content_encoding,"x-gzip") == 0) &&
|
||||
zend_hash_str_exists(EG(function_table), "gzinflate", sizeof("gzinflate")-1)) {
|
||||
ZVAL_STRING(&func, "gzinflate");
|
||||
ZVAL_STRINGL(¶ms[0], http_body->val+10, http_body->len-10);
|
||||
} else if (strcmp(content_encoding,"deflate") == 0 &&
|
||||
zend_hash_str_exists(EG(function_table), "gzuncompress", sizeof("gzuncompress")-1)) {
|
||||
zend_hash_str_exists(EG(function_table), "gzuncompress", sizeof("gzuncompress")-1)) {
|
||||
ZVAL_STRING(&func, "gzuncompress");
|
||||
ZVAL_STR_COPY(¶ms[0], http_body);
|
||||
} else if (strcmp(content_encoding,"deflate") == 0 &&
|
||||
zend_hash_str_exists(EG(function_table), "gzinflate", sizeof("gzinflate")-1)) {
|
||||
ZVAL_STRING(&func, "gzinflate");
|
||||
ZVAL_STR_COPY(¶ms[0], http_body);
|
||||
} else {
|
||||
efree(content_encoding);
|
||||
zend_string_release_ex(http_headers, 0);
|
||||
|
||||
40
ext/soap/tests/bugs/bug47925.phpt
Normal file
40
ext/soap/tests/bugs/bug47925.phpt
Normal file
@@ -0,0 +1,40 @@
|
||||
--TEST--
|
||||
Bug #47925 (PHPClient can't decompress response (transposed uncompress methods?))
|
||||
--EXTENSIONS--
|
||||
soap
|
||||
zlib
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (@!include __DIR__."/../../../standard/tests/http/server.inc") die('skip server.inc not available');
|
||||
http_server_skipif();
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
require __DIR__."/../../../standard/tests/http/server.inc";
|
||||
|
||||
$plain_response = <<<XML
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://testuri.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
|
||||
<SOAP-ENV:Body>
|
||||
<ns1:AddResponse>
|
||||
<return xsi:type="xsd:int">7</return>
|
||||
</ns1:AddResponse>
|
||||
</SOAP-ENV:Body>
|
||||
</SOAP-ENV:Envelope>
|
||||
XML;
|
||||
|
||||
function test($compressed_response, $compression_name) {
|
||||
$length = strlen($compressed_response);
|
||||
$server_response = "data://text/xml;base64," . base64_encode("HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Encoding: $compression_name\r\nContent-Length: $length\r\n\r\n$compressed_response");
|
||||
['pid' => $pid, 'uri' => $uri] = http_server([$server_response]);
|
||||
$client = new SoapClient(NULL, ['location' => $uri, 'uri' => $uri]);
|
||||
var_dump($client->Add(3, 4));
|
||||
http_server_kill($pid);
|
||||
}
|
||||
|
||||
test(gzcompress($plain_response), "gzip");
|
||||
test(gzdeflate($plain_response), "deflate");
|
||||
?>
|
||||
--EXPECT--
|
||||
int(7)
|
||||
int(7)
|
||||
Reference in New Issue
Block a user