. Fixed bug #73087, #61183, #71494 (Memory corruption in bindParam).
(Dorin Marcoci)
+- Soap:
+ . Fixed bug #73538 (SoapClient::__setSoapHeaders doesn't overwrite SOAP
+ headers). (duncan3dc)
+
- SPL:
. Fixed bug #73423 (Reproducible crash with GDB backtrace). (Laruence)
if (headers == NULL || Z_TYPE_P(headers) == IS_NULL) {
zend_hash_str_del(Z_OBJPROP_P(this_ptr), "__default_headers", sizeof("__default_headers")-1);
} else if (Z_TYPE_P(headers) == IS_ARRAY) {
- zval *default_headers;
-
verify_soap_headers_array(Z_ARRVAL_P(headers));
- if ((default_headers = zend_hash_str_find(Z_OBJPROP_P(this_ptr), "__default_headers", sizeof("__default_headers")-1)) == NULL) {
- add_property_zval(this_ptr, "__default_headers", headers);
- }
+ add_property_zval(this_ptr, "__default_headers", headers);
} else if (Z_TYPE_P(headers) == IS_OBJECT &&
instanceof_function(Z_OBJCE_P(headers), soap_header_class_entry)) {
zval default_headers;
--- /dev/null
+--TEST--
+SOAP: SoapClient::__setHeaders array overrides previous headers
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+$client = new SoapClient(null, [
+ "location" => "test://",
+ "uri" => "test://",
+ "exceptions" => false,
+ "trace" => true,
+]);
+$client->__setSoapHeaders(new \SoapHeader('ns', 'Header', ['something' => 1]));
+$client->__setSoapHeaders(new \SoapHeader('ns', 'Header', ['something' => 2]));
+$client->test();
+echo $client->__getLastRequest();
+
+$client = new SoapClient(null, [
+ "location" => "test://",
+ "uri" => "test://",
+ "exceptions" => false,
+ "trace" => true,
+]);
+$client->__setSoapHeaders([new \SoapHeader('ns', 'Header', ['something' => 1])]);
+$client->__setSoapHeaders([new \SoapHeader('ns', 'Header', ['something' => 2])]);
+$client->test();
+echo $client->__getLastRequest();
+
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="test://" xmlns:ns2="ns" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Header><ns2:Header><item><key>something</key><value>2</value></item></ns2:Header></SOAP-ENV:Header><SOAP-ENV:Body><ns1:test/></SOAP-ENV:Body></SOAP-ENV:Envelope>
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="test://" xmlns:ns2="ns" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Header><ns2:Header><item><key>something</key><value>2</value></item></ns2:Header></SOAP-ENV:Header><SOAP-ENV:Body><ns1:test/></SOAP-ENV:Body></SOAP-ENV:Envelope>