From: Dmitry Stogov Date: Thu, 1 Nov 2007 14:10:19 +0000 (+0000) Subject: Fixed bug #42773 (WSDL error causes HTTP 500 Response) X-Git-Tag: php-5.2.5RC2~7 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=375bf36e42b5cfe93c7386b92a083355323a5b3d;p=php Fixed bug #42773 (WSDL error causes HTTP 500 Response) --- diff --git a/NEWS b/NEWS index 845efea722..d0482c8a97 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ PHP NEWS - Added ability to control memory consumption between request using ZEND_MM_COMPACT environment variable. (Dmitry) - Fixed bug #43137 (rmdir() and rename() do not clear statcache). (Jani) +- Fixed bug #42773 (WSDL error causes HTTP 500 Response). (Dmitry) 18 Oct 2007, PHP 5.2.5RC1 - Upgraded PCRE to version 7.3 (Nuno) diff --git a/ext/soap/soap.c b/ext/soap/soap.c index e6270a06fc..b9cb1c8412 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -2039,13 +2039,14 @@ static void soap_server_fault(char* code, char* string, char *actor, zval* detai static void soap_error_handler(int error_num, const char *error_filename, const uint error_lineno, const char *format, va_list args) { - zend_bool _old_in_compilation, _old_in_execution; + zend_bool _old_in_compilation, _old_in_execution, _old_headers_sent; zend_execute_data *_old_current_execute_data; TSRMLS_FETCH(); _old_in_compilation = CG(in_compilation); _old_in_execution = EG(in_execution); _old_current_execute_data = EG(current_execute_data); + _old_headers_sent = SG(headers_sent); if (!SOAP_GLOBAL(use_soap_error_handler)) { call_old_error_handler(error_num, error_filename, error_lineno, format, args); @@ -2103,12 +2104,14 @@ static void soap_error_handler(int error_num, const char *error_filename, const old_objects = EG(objects_store).object_buckets; EG(objects_store).object_buckets = NULL; PG(display_errors) = 0; + SG(headers_sent) = 1; zend_try { call_old_error_handler(error_num, error_filename, error_lineno, format, args); } zend_catch { CG(in_compilation) = _old_in_compilation; EG(in_execution) = _old_in_execution; EG(current_execute_data) = _old_current_execute_data; + SG(headers_sent) = _old_headers_sent; } zend_end_try(); EG(objects_store).object_buckets = old_objects; PG(display_errors) = old; @@ -2181,12 +2184,14 @@ static void soap_error_handler(int error_num, const char *error_filename, const } PG(display_errors) = 0; + SG(headers_sent) = 1; zend_try { call_old_error_handler(error_num, error_filename, error_lineno, format, args); } zend_catch { CG(in_compilation) = _old_in_compilation; EG(in_execution) = _old_in_execution; EG(current_execute_data) = _old_current_execute_data; + SG(headers_sent) = _old_headers_sent; } zend_end_try(); PG(display_errors) = old;