Merged bug fixes from PHP_5_0.

This commit is contained in:
Dmitry Stogov 2004-08-26 12:24:54 +00:00
parent b8ed424ed3
commit 6078001f12
5 changed files with 136 additions and 3 deletions

View File

@ -250,8 +250,12 @@ int parse_packet_soap(zval *this_ptr, char *buffer, int buffer_size, sdlFunction
while (zend_hash_get_current_data(fn->responseParameters, (void **)&h_param) == SUCCESS) { while (zend_hash_get_current_data(fn->responseParameters, (void **)&h_param) == SUCCESS) {
param = (*h_param); param = (*h_param);
if (fnb->style == SOAP_DOCUMENT) { if (fnb->style == SOAP_DOCUMENT) {
name = param->encode->details.type_str; if (param->element) {
ns = param->encode->details.ns; name = param->encode->details.type_str;
ns = param->encode->details.ns;
} else {
name = param->paramName;
}
} else { } else {
name = fn->responseName; name = fn->responseName;
/* ns = ? */ /* ns = ? */

View File

@ -1126,7 +1126,9 @@ PHP_METHOD(SoapServer, getFunctions)
HashPosition pos; HashPosition pos;
zend_hash_internal_pointer_reset_ex(ft, &pos); zend_hash_internal_pointer_reset_ex(ft, &pos);
while (zend_hash_get_current_data_ex(ft, (void **)&f, &pos) != FAILURE) { while (zend_hash_get_current_data_ex(ft, (void **)&f, &pos) != FAILURE) {
add_next_index_string(return_value, f->common.function_name, 1); if ((service->type != SOAP_CLASS) || (f->common.fn_flags & ZEND_ACC_PUBLIC)) {
add_next_index_string(return_value, f->common.function_name, 1);
}
zend_hash_move_forward_ex(ft, &pos); zend_hash_move_forward_ex(ft, &pos);
} }
} }

View File

@ -0,0 +1,25 @@
--TEST--
Bug #29844 (SoapServer::setClass() should not export non-public methods)
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--FILE--
<?php
class hello_world {
public function hello($to) {
return 'Hello ' . $to;
}
private function bye($to) {
return 'Bye ' . $to;
}
}
$server = new SoapServer(NULL, array("uri"=>"test://"));
$server->setClass('hello_world');
$functions = $server->getFunctions();
foreach($functions as $func) {
echo $func . "\n";
}
?>
--EXPECT--
hello

View File

@ -0,0 +1,36 @@
--TEST--
Bug #29844 (SOAP doesn't return the result of a valid SOAP request)
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--FILE--
<?php
class hello_world {
public function hello($to) {
return 'Hello ' . $to;
}
}
class LocalSoapClient extends SoapClient {
function LocalSoapClient($wsdl, $options) {
$this->SoapClient($wsdl, $options);
$this->server = new SoapServer($wsdl, $options);
$this->server->setClass('hello_world');;
}
function __doRequest($request, $location, $action, $version) {
ob_start();
$this->server->handle($request);
$response = ob_get_contents();
ob_end_clean();
return $response;
}
}
$client = new LocalSoapClient(dirname(__FILE__)."/bug29844.wsdl", array("trace"=>1));
var_dump($client->hello('davey'));
?>
--EXPECT--
string(11) "Hello davey"

View File

@ -0,0 +1,66 @@
<?xml version="1.0" ?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://davey.synapticmedia.net/php-mag/shafikdavey_automaticwebservices/src/Listing%201.php" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" name="Crtx_SOAP_AutoDiscover_Example" targetNamespace="http://davey.synapticmedia.net/php-mag/shafikdavey_automaticwebservices/src/Listing%201.php">
<portType name="Crtx_SOAP_AutoDiscover_ExamplePort">
<operation name="hello">
<input message="tns:helloRequest" />
<output message="tns:helloResponse" />
<documentation>Say Hello to Somebody</documentation>
</operation>
<operation name="goodBye">
<input message="tns:goodByeRequest" />
<output message="tns:goodByeResponse" />
<documentation>Say Goodbye to Somebody</documentation>
</operation>
</portType>
<binding name="Crtx_SOAP_AutoDiscover_ExampleBinding"
type="tns:Crtx_SOAP_AutoDiscover_ExamplePort">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="hello">
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</output>
<soap:operation soapAction="http://davey.synapticmedia.net/php-mag/shafikdavey_automaticwebservices/src/Listing%201.php#hello" />
</operation>
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="goodBye">
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</output>
<soap:operation soapAction="http://davey.synapticmedia.net/php-mag/shafikdavey_automaticwebservices/src/Listing%201.php#goodBye" />
</operation>
</binding>
<service name="Crtx_SOAP_AutoDiscover_ExampleService">
<port name="tns:Crtx_SOAP_AutoDiscover_ExamplePort"
binding="tns:Crtx_SOAP_AutoDiscover_ExampleBinding">
<soap:address location="http://davey.synapticmedia.net/php-mag/shafikdavey_automaticwebservices/src/Listing%201.php" />
</port>
</service>
<message name="helloRequest">
<part name="to" type="xsd:string" />
<documentation>Say Hello to Somebody</documentation>
</message>
<message name="helloResponse">
<part name="helloReturn" type="xsd:string" />
<documentation>The greeting</documentation>
</message>
<message name="goodByeRequest">
<part name="to" type="xsd:string" />
<documentation>Say Goodbye to Somebody</documentation>
</message>
<message name="goodByeResponse">
<part name="goodByeReturn" type="xsd:string" />
<documentation>The goodbye</documentation>
</message>
</definitions>