]> granicus.if.org Git - php/commitdiff
HTTP compression (memory leak was fixed)
authorDmitry Stogov <dmitry@php.net>
Wed, 25 Feb 2004 14:37:06 +0000 (14:37 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 25 Feb 2004 14:37:06 +0000 (14:37 +0000)
ext/soap/soap.c
ext/soap/tests/server019.phpt [new file with mode: 0644]
ext/soap/tests/server020.phpt [new file with mode: 0644]

index b933adecabce8f6b74400d00d08699fc9e728d8b..adf219072c1f2f6550cf10e2d4d04ed8bd2fb344 100644 (file)
@@ -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 (file)
index 0000000..4ad9c5e
--- /dev/null
@@ -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 (file)
index 0000000..bacbc57
--- /dev/null
@@ -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