dmitry Thu Jun 14 07:09:42 2007 UTC Modified files: /php-src/ext/soap php_encoding.c /php-src/ext/soap/tests/bugs bug41566.phpt Log: Fixed bug #41566 (SOAP Server not properly generating href attributes) http://cvs.php.net/viewvc.cgi/php-src/ext/soap/php_encoding.c?r1=1.159&r2=1.160&diff_format=u Index: php-src/ext/soap/php_encoding.c diff -u php-src/ext/soap/php_encoding.c:1.159 php-src/ext/soap/php_encoding.c:1.160 --- php-src/ext/soap/php_encoding.c:1.159 Wed May 2 09:38:22 2007 +++ php-src/ext/soap/php_encoding.c Thu Jun 14 07:09:42 2007 @@ -17,7 +17,7 @@ | Dmitry Stogov <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: php_encoding.c,v 1.159 2007/05/02 09:38:22 dmitry Exp $ */ +/* $Id: php_encoding.c,v 1.160 2007/06/14 07:09:42 dmitry Exp $ */ #include <time.h> @@ -298,6 +298,10 @@ } if (attr) { id = (char*)attr->children->content; + smart_str_appendc(&prefix, '#'); + smart_str_appends(&prefix, id); + smart_str_0(&prefix); + id = prefix.c; } else { SOAP_GLOBAL(cur_uniq_ref)++; smart_str_appendl(&prefix, "#ref", 4); @@ -311,6 +315,10 @@ attr = get_attribute_ex(attr, "id", SOAP_1_2_ENC_NAMESPACE); if (attr) { id = (char*)attr->children->content; + smart_str_appendc(&prefix, '#'); + smart_str_appends(&prefix, id); + smart_str_0(&prefix); + id = prefix.c; } else { SOAP_GLOBAL(cur_uniq_ref)++; smart_str_appendl(&prefix, "#ref", 4); http://cvs.php.net/viewvc.cgi/php-src/ext/soap/tests/bugs/bug41566.phpt?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/soap/tests/bugs/bug41566.phpt diff -u /dev/null php-src/ext/soap/tests/bugs/bug41566.phpt:1.2 --- /dev/null Thu Jun 14 07:09:42 2007 +++ php-src/ext/soap/tests/bugs/bug41566.phpt Thu Jun 14 07:09:42 2007 @@ -0,0 +1,65 @@ +--TEST-- +Bug #41566 (SOAP Server not properly generating href attributes) +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +function test() { + $aUser = new User(); + $aUser->sName = 'newUser'; + + $aUsers = Array(); + $aUsers[] = $aUser; + $aUsers[] = $aUser; + $aUsers[] = $aUser; + $aUsers[] = $aUser; + return $aUsers; +} + +/* Simple User definition */ +Class User { + /** @var string */ + public $sName; +} + +$server = new soapserver(null,array('uri'=>"http://testuri.org", 'soap_version'=>SOAP_1_2)); +$server->addfunction("test"); + +$HTTP_RAW_POST_DATA = <<<EOF +<?xml version="1.0" encoding="ISO-8859-1"?> +<SOAP-ENV:Envelope + SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" + xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:si="http://soapinterop.org/xsd"> + <SOAP-ENV:Body> + <ns1:test xmlns:ns1="http://testuri.org" /> + </SOAP-ENV:Body> +</SOAP-ENV:Envelope> +EOF; +ob_start(); +$server->handle($HTTP_RAW_POST_DATA); +echo "ok\n"; + +$HTTP_RAW_POST_DATA = <<<EOF +<?xml version="1.0" encoding="UTF-8"?> +<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" + xmlns:ns1="http://testuri.org" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:enc="http://www.w3.org/2003/05/soap-encoding"> + <env:Body> + <ns1:test env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"/> + </env:Body> +</env:Envelope> +EOF; +$server->handle($HTTP_RAW_POST_DATA); +echo "ok\n"; +ob_flush(); +--EXPECT-- +<?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:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 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:testResponse><return SOAP-ENC:arrayType="SOAP-ENC:Struct[4]" xsi:type="SOAP-ENC:Array"><item xsi:type="SOAP-ENC:Struct" id="ref1"><sName xsi:type="xsd:string">newUser</sName></item><item href="#ref1"/><item href="#ref1"/><item href="#ref1"/></return></ns1:testResponse></SOAP-ENV:Body></SOAP-ENV:Envelope> +ok +<?xml version="1.0" encoding="UTF-8"?> +<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://testuri.org" xmlns:enc="http://www.w3.org/2003/05/soap-encoding" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:testResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return enc:itemType="enc:Struct" enc:arraySize="4" xsi:type="enc:Array"><item xsi:type="enc:Struct" enc:id="ref1"><sName xsi:type="xsd:string">newUser</sName></item><item enc:ref="#ref1"/><item enc:ref="#ref1"/><item enc:ref="#ref1"/></return></ns1:testResponse></env:Body></env:Envelope> +ok
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php