iliaa           Sun May  6 17:21:13 2007 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src    NEWS 
    /php-src/ext/soap   soap.c 
  Log:
  
  Allow SOAP extension's handler() to work even when                        
  always_populate_raw_post_data is off. 
  
  # Tests will be updated in the next few days
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.685&r2=1.2027.2.547.2.686&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.685 php-src/NEWS:1.2027.2.547.2.686
--- php-src/NEWS:1.2027.2.547.2.685     Sun May  6 16:34:14 2007
+++ php-src/NEWS        Sun May  6 17:21:13 2007
@@ -1,6 +1,8 @@
 PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? ??? 2007, PHP 5.2.3
+- Allow SOAP extension's handler() to work even when
+  always_populate_raw_post_data is off. (Ilia)
 - Fixed ext/filter Email Validation Vulnerability (MOPB-24 by Stefan Esser)
   (Ilia)
 - Fixed altering $this via argument named "this". (Dmitry)
http://cvs.php.net/viewvc.cgi/php-src/ext/soap/soap.c?r1=1.156.2.28.2.23&r2=1.156.2.28.2.24&diff_format=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.156.2.28.2.23 
php-src/ext/soap/soap.c:1.156.2.28.2.24
--- php-src/ext/soap/soap.c:1.156.2.28.2.23     Wed May  2 08:22:13 2007
+++ php-src/ext/soap/soap.c     Sun May  6 17:21:13 2007
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: soap.c,v 1.156.2.28.2.23 2007/05/02 08:22:13 dmitry Exp $ */
+/* $Id: soap.c,v 1.156.2.28.2.24 2007/05/06 17:21:13 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -140,8 +140,6 @@
        SOAP_GLOBAL(soap_version) = _old_soap_version;
 #endif
 
-#define HTTP_RAW_POST_DATA "HTTP_RAW_POST_DATA"
-
 #define ZERO_PARAM() \
        if (ZEND_NUM_ARGS() != 0) \
                WRONG_PARAM_COUNT;
@@ -1403,7 +1401,7 @@
        sdlPtr old_sdl = NULL;
        soapServicePtr service;
        xmlDocPtr doc_request=NULL, doc_return;
-       zval function_name, **params, **raw_post, *soap_obj, retval;
+       zval function_name, **params, *soap_obj, retval;
        char *fn_name, cont_len[30];
        int num_params = 0, size, i, call_status = 0;
        xmlChar *buf;
@@ -1478,8 +1476,9 @@
        }
 
        if (ZEND_NUM_ARGS() == 0) {
-               if (zend_hash_find(&EG(symbol_table), HTTP_RAW_POST_DATA, 
sizeof(HTTP_RAW_POST_DATA), (void **) &raw_post)!=FAILURE
-                       && ((*raw_post)->type==IS_STRING)) {
+               if (SG(request_info).raw_post_data) {
+                       char *post_data = SG(request_info).raw_post_data;
+                       int post_data_length = 
SG(request_info).raw_post_data_length;
                        zval **server_vars, **encoding;
 
                        zend_is_auto_global("_SERVER", sizeof("_SERVER")-1 
TSRMLS_CC);
@@ -1497,13 +1496,13 @@
                                    zend_hash_exists(EG(function_table), 
"gzinflate", sizeof("gzinflate"))) {
                                        ZVAL_STRING(&func, "gzinflate", 0);
                                        params[0] = &param;
-                                       ZVAL_STRINGL(params[0], 
Z_STRVAL_PP(raw_post)+10, Z_STRLEN_PP(raw_post)-10, 0);
+                                       ZVAL_STRINGL(params[0], post_data+10, 
post_data_length-10, 0);
                                        INIT_PZVAL(params[0]);
                                } else if 
(strcmp(Z_STRVAL_PP(encoding),"deflate") == 0 &&
                           zend_hash_exists(EG(function_table), "gzuncompress", 
sizeof("gzuncompress"))) {
                                        ZVAL_STRING(&func, "gzuncompress", 0);
                                        params[0] = &param;
-                                       ZVAL_STRINGL(params[0], 
Z_STRVAL_PP(raw_post), Z_STRLEN_PP(raw_post), 0);
+                                       ZVAL_STRINGL(params[0], post_data, 
post_data_length, 0);
                                        INIT_PZVAL(params[0]);
                                } else {
                                        php_error_docref(NULL TSRMLS_CC, 
E_ERROR,"Request is compressed with unknown compression 
'%s'",Z_STRVAL_PP(encoding));
@@ -1516,16 +1515,9 @@
                                        php_error_docref(NULL TSRMLS_CC, 
E_ERROR,"Can't uncompress compressed request");
                                }
                        } else {
-                               doc_request = 
soap_xmlParseMemory(Z_STRVAL_PP(raw_post),Z_STRLEN_PP(raw_post));
+                               doc_request = soap_xmlParseMemory(post_data, 
post_data_length);
                        }
                } else {
-                       if (SG(request_info).request_method &&
-                       strcmp(SG(request_info).request_method, "POST") == 0) {
-                               if 
(!zend_ini_long("always_populate_raw_post_data", 
sizeof("always_populate_raw_post_data"), 0)) {
-                                       php_error_docref(NULL TSRMLS_CC, 
E_ERROR, "PHP-SOAP requires 'always_populate_raw_post_data' to be on please 
check your php.ini file");
-                               }
-                       }
-                       soap_server_fault("Server", "Bad Request. Can't find 
HTTP_RAW_POST_DATA", NULL, NULL, NULL TSRMLS_CC);
                        return;
                }
        } else {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to