]> granicus.if.org Git - php/commitdiff
Fixed bug #36283 (SOAPClient Compression Broken).
authorDmitry Stogov <dmitry@php.net>
Mon, 6 Feb 2006 10:16:15 +0000 (10:16 +0000)
committerDmitry Stogov <dmitry@php.net>
Mon, 6 Feb 2006 10:16:15 +0000 (10:16 +0000)
ext/soap/php_http.c

index 0be169c4ab914ba85dc257bb8e34fd301e103847..2cbf5801f2e87be9fd2ae833737da24fa941a2f6 100644 (file)
@@ -223,6 +223,7 @@ int make_http_soap_request(zval  *this_ptr,
 {
        char *request;
        smart_str soap_headers = {0};
+       smart_str soap_headers_z = {0};
        int request_size, err;
        php_url *phpurl = NULL;
        php_stream *stream;
@@ -250,7 +251,7 @@ int make_http_soap_request(zval  *this_ptr,
                int kind  = Z_LVAL_PP(tmp) & SOAP_COMPRESSION_DEFLATE;
 
          if ((Z_LVAL_PP(tmp) & SOAP_COMPRESSION_ACCEPT) != 0) {
-                       smart_str_append_const(&soap_headers,"Accept-Encoding: gzip, deflate\r\n");
+                       smart_str_append_const(&soap_headers_z,"Accept-Encoding: gzip, deflate\r\n");
          }
          if (level > 0) {
                        zval func;
@@ -270,11 +271,11 @@ int make_http_soap_request(zval  *this_ptr,
            if (kind == SOAP_COMPRESSION_DEFLATE) {
                n = 2;
                                ZVAL_STRING(&func, "gzcompress", 0);
-                               smart_str_append_const(&soap_headers,"Content-Encoding: deflate\r\n");
+                               smart_str_append_const(&soap_headers_z,"Content-Encoding: deflate\r\n");
            } else {
              n = 3;
                                ZVAL_STRING(&func, "gzencode", 0);
-                               smart_str_append_const(&soap_headers,"Content-Encoding: gzip\r\n");
+                               smart_str_append_const(&soap_headers_z,"Content-Encoding: gzip\r\n");
                                ZVAL_LONG(params[2], 1);
            }
                        if (call_user_function(CG(function_table), (zval**)NULL, &func, &retval, n, params TSRMLS_CC) == SUCCESS &&
@@ -420,6 +421,10 @@ try_again:
                        "Accept: text/html; text/xml; text/plain\r\n"
 */
                        "User-Agent: PHP SOAP 0.1\r\n");
+
+               smart_str_append(&soap_headers, &soap_headers_z);
+               smart_str_free(&soap_headers_z);
+               
                if (soap_version == SOAP_1_2) {
                        smart_str_append_const(&soap_headers,"Content-Type: application/soap+xml; charset=utf-8");
                        if (soapaction) {