dmitry Tue Mar 21 12:26:57 2006 UTC
Modified files: (Branch: PHP_5_1)
/php-src/ext/soap soap.c
Log:
Fixed compatibility with auto_globals_jit
http://cvs.php.net/viewcvs.cgi/php-src/ext/soap/soap.c?r1=1.156.2.20&r2=1.156.2.21&diff_format=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.156.2.20 php-src/ext/soap/soap.c:1.156.2.21
--- php-src/ext/soap/soap.c:1.156.2.20 Tue Mar 21 12:04:55 2006
+++ php-src/ext/soap/soap.c Tue Mar 21 12:26:57 2006
@@ -17,7 +17,7 @@
| Dmitry Stogov <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: soap.c,v 1.156.2.20 2006/03/21 12:04:55 dmitry Exp $ */
+/* $Id: soap.c,v 1.156.2.21 2006/03/21 12:26:57 dmitry Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1358,7 +1358,7 @@
sdlPtr old_sdl = NULL;
soapServicePtr service;
xmlDocPtr doc_request=NULL, doc_return;
- zval function_name, **params, **raw_post, *soap_obj, retval,
**server_vars;
+ zval function_name, **params, **raw_post, *soap_obj, retval;
char *fn_name, cont_len[30];
int num_params = 0, size, i, call_status = 0;
xmlChar *buf;
@@ -1380,54 +1380,51 @@
}
INIT_ZVAL(retval);
- if (zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"),
(void **)&server_vars) == SUCCESS) {
- zval **req_method, **query_string;
- if (zend_hash_find(Z_ARRVAL_PP(server_vars), "REQUEST_METHOD",
sizeof("REQUEST_METHOD"), (void **)&req_method) == SUCCESS) {
- if (!strcmp(Z_STRVAL_PP(req_method), "GET") &&
zend_hash_find(Z_ARRVAL_PP(server_vars), "QUERY_STRING",
sizeof("QUERY_STRING"), (void **)&query_string) == SUCCESS) {
- if (stricmp(Z_STRVAL_PP(query_string), "wsdl")
== 0) {
- if (service->sdl) {
+ if (SG(request_info).request_method &&
+ strcmp(SG(request_info).request_method, "GET") == 0 &&
+ SG(request_info).query_string &&
+ stricmp(SG(request_info).query_string, "wsdl") == 0) {
+
+ if (service->sdl) {
/*
- char *hdr = emalloc(sizeof("Location:
")+strlen(service->sdl->source));
- strcpy(hdr,"Location: ");
- strcat(hdr,service->sdl->source);
- sapi_add_header(hdr,
sizeof("Location: ")+strlen(service->sdl->source)-1, 1);
- efree(hdr);
+ char *hdr = emalloc(sizeof("Location:
")+strlen(service->sdl->source));
+ strcpy(hdr,"Location: ");
+ strcat(hdr,service->sdl->source);
+ sapi_add_header(hdr, sizeof("Location:
")+strlen(service->sdl->source)-1, 1);
+ efree(hdr);
*/
- zval readfile, readfile_ret,
*param;
+ zval readfile, readfile_ret, *param;
- INIT_ZVAL(readfile);
- INIT_ZVAL(readfile_ret);
- MAKE_STD_ZVAL(param);
-
- sapi_add_header("Content-Type:
text/xml; charset=utf-8", sizeof("Content-Type: text/xml; charset=utf-8")-1, 1);
- ZVAL_STRING(param,
service->sdl->source, 1);
- ZVAL_STRING(&readfile,
"readfile", 1);
- if
(call_user_function(EG(function_table), NULL, &readfile, &readfile_ret, 1,
¶m TSRMLS_CC) == FAILURE) {
-
soap_server_fault("Server", "Couldn't find WSDL", NULL, NULL, NULL TSRMLS_CC);
- }
+ INIT_ZVAL(readfile);
+ INIT_ZVAL(readfile_ret);
+ MAKE_STD_ZVAL(param);
- zval_ptr_dtor(¶m);
- zval_dtor(&readfile);
- zval_dtor(&readfile_ret);
+ sapi_add_header("Content-Type: text/xml;
charset=utf-8", sizeof("Content-Type: text/xml; charset=utf-8")-1, 1);
+ ZVAL_STRING(param, service->sdl->source, 1);
+ ZVAL_STRING(&readfile, "readfile", 1);
+ if (call_user_function(EG(function_table), NULL,
&readfile, &readfile_ret, 1, ¶m TSRMLS_CC) == FAILURE) {
+ soap_server_fault("Server", "Couldn't find
WSDL", NULL, NULL, NULL TSRMLS_CC);
+ }
- SOAP_SERVER_END_CODE();
- return;
- } else {
- soap_server_fault("Server",
"WSDL generation is not supported yet", NULL, NULL, NULL TSRMLS_CC);
+ zval_ptr_dtor(¶m);
+ zval_dtor(&readfile);
+ zval_dtor(&readfile_ret);
+
+ SOAP_SERVER_END_CODE();
+ return;
+ } else {
+ soap_server_fault("Server", "WSDL generation is not
supported yet", NULL, NULL, NULL TSRMLS_CC);
/*
- sapi_add_header("Content-Type:
text/xml; charset=utf-8", sizeof("Content-Type: text/xml; charset=utf-8"), 1);
- PUTS("<?xml version=\"1.0\"
?>\n<definitions\n");
- PUTS("
xmlns=\"http://schemas.xmlsoap.org/wsdl/\"\n");
- PUTS(" targetNamespace=\"");
- PUTS(service->uri);
- PUTS("\">\n");
- PUTS("</definitions>");
+ sapi_add_header("Content-Type: text/xml;
charset=utf-8", sizeof("Content-Type: text/xml; charset=utf-8"), 1);
+ PUTS("<?xml version=\"1.0\" ?>\n<definitions\n");
+ PUTS("
xmlns=\"http://schemas.xmlsoap.org/wsdl/\"\n");
+ PUTS(" targetNamespace=\"");
+ PUTS(service->uri);
+ PUTS("\">\n");
+ PUTS("</definitions>");
*/
- SOAP_SERVER_END_CODE();
- return;
- }
- }
- }
+ SOAP_SERVER_END_CODE();
+ return;
}
}
@@ -1440,6 +1437,7 @@
&& ((*raw_post)->type==IS_STRING)) {
zval **server_vars, **encoding;
+ zend_is_auto_global("_SERVER", sizeof("_SERVER")-1
TSRMLS_CC);
if (zend_hash_find(&EG(symbol_table), "_SERVER",
sizeof("_SERVER"), (void **) &server_vars) == SUCCESS &&
Z_TYPE_PP(server_vars) == IS_ARRAY &&
zend_hash_find(Z_ARRVAL_PP(server_vars),
"HTTP_CONTENT_ENCODING", sizeof("HTTP_CONTENT_ENCODING"), (void **)
&encoding)==SUCCESS &&
@@ -1476,14 +1474,10 @@
doc_request =
soap_xmlParseMemory(Z_STRVAL_PP(raw_post),Z_STRLEN_PP(raw_post));
}
} else {
- if (zend_hash_find(&EG(symbol_table), "_SERVER",
sizeof("_SERVER"), (void **)&server_vars) == SUCCESS) {
- zval **req_method;
- if (zend_hash_find(Z_ARRVAL_PP(server_vars),
"REQUEST_METHOD", sizeof("REQUEST_METHOD"), (void **)&req_method) == SUCCESS) {
- if (!strcmp(Z_STRVAL_PP(req_method),
"POST")) {
- 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");
- }
- }
+ 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);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php