diff options
| -rw-r--r-- | ext/soap/soap.c | 1 | ||||
| -rw-r--r-- | ext/soap/tests/server019.phpt | 37 | ||||
| -rw-r--r-- | ext/soap/tests/server020.phpt | 37 |
3 files changed, 75 insertions, 0 deletions
diff --git a/ext/soap/soap.c b/ext/soap/soap.c index b933adecab..adf219072c 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -1285,6 +1285,7 @@ PHP_METHOD(soapserver, handle) if (call_user_function(CG(function_table), (zval**)NULL, &func, &retval, 1, params TSRMLS_CC) == SUCCESS && Z_TYPE(retval) == IS_STRING) { doc_request = soap_xmlParseMemory(Z_STRVAL(retval),Z_STRLEN(retval)); + zval_dtor(&retval); } else { php_error(E_ERROR,"Can't uncompress compressed request"); } diff --git a/ext/soap/tests/server019.phpt b/ext/soap/tests/server019.phpt new file mode 100644 index 0000000000..4ad9c5ee85 --- /dev/null +++ b/ext/soap/tests/server019.phpt @@ -0,0 +1,37 @@ +--TEST-- +SOAP Server 19: compressed request (gzip) +--SKIPIF-- +<?php require_once('skipif.inc'); + if (!extension_loaded('zlib')) die('skip zlib extension not available'); +?> +--FILE-- +<?php +function test() { + return "Hello World"; +} + +$server = new soapserver(null,array('uri'=>"http://testuri.org")); +$server->addfunction("test"); + +$HTTP_RAW_POST_DATA = gzencode(<<<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 +, 9, FORCE_GZIP); +$_SERVER['HTTP_CONTENT_ENCODING'] = "gzip"; +$server->handle(); +echo "ok\n"; +?> +--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:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:testResponse><return xsi:type="xsd:string">Hello World</return></ns1:testResponse></SOAP-ENV:Body></SOAP-ENV:Envelope> +ok diff --git a/ext/soap/tests/server020.phpt b/ext/soap/tests/server020.phpt new file mode 100644 index 0000000000..bacbc57849 --- /dev/null +++ b/ext/soap/tests/server020.phpt @@ -0,0 +1,37 @@ +--TEST-- +SOAP Server 20: compressed request (deflate) +--SKIPIF-- +<?php require_once('skipif.inc'); + if (!extension_loaded('zlib')) die('skip zlib extension not available'); +?> +--FILE-- +<?php +function test() { + return "Hello World"; +} + +$server = new soapserver(null,array('uri'=>"http://testuri.org")); +$server->addfunction("test"); + +$HTTP_RAW_POST_DATA = gzcompress(<<<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 +, 9); +$_SERVER['HTTP_CONTENT_ENCODING'] = "deflate"; +$server->handle(); +echo "ok\n"; +?> +--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:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:testResponse><return xsi:type="xsd:string">Hello World</return></ns1:testResponse></SOAP-ENV:Body></SOAP-ENV:Envelope> +ok |
