Fixed bug #42773 (WSDL error causes HTTP 500 Response)

This commit is contained in:
Dmitry Stogov 2007-11-01 12:26:38 +00:00
parent 52e3ca0b32
commit 6fe79496fe

View file

@ -2423,13 +2423,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) 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; zend_execute_data *_old_current_execute_data;
TSRMLS_FETCH(); TSRMLS_FETCH();
_old_in_compilation = CG(in_compilation); _old_in_compilation = CG(in_compilation);
_old_in_execution = EG(in_execution); _old_in_execution = EG(in_execution);
_old_current_execute_data = EG(current_execute_data); _old_current_execute_data = EG(current_execute_data);
_old_headers_sent = SG(headers_sent);
if (!SOAP_GLOBAL(use_soap_error_handler)) { if (!SOAP_GLOBAL(use_soap_error_handler)) {
call_old_error_handler(error_num, error_filename, error_lineno, format, args); call_old_error_handler(error_num, error_filename, error_lineno, format, args);
@ -2483,12 +2484,14 @@ static void soap_error_handler(int error_num, const char *error_filename, const
old_objects = EG(objects_store).object_buckets; old_objects = EG(objects_store).object_buckets;
EG(objects_store).object_buckets = NULL; EG(objects_store).object_buckets = NULL;
PG(display_errors) = 0; PG(display_errors) = 0;
SG(headers_sent) = 1;
zend_try { zend_try {
call_old_error_handler(error_num, error_filename, error_lineno, format, args); call_old_error_handler(error_num, error_filename, error_lineno, format, args);
} zend_catch { } zend_catch {
CG(in_compilation) = _old_in_compilation; CG(in_compilation) = _old_in_compilation;
EG(in_execution) = _old_in_execution; EG(in_execution) = _old_in_execution;
EG(current_execute_data) = _old_current_execute_data; EG(current_execute_data) = _old_current_execute_data;
SG(headers_sent) = _old_headers_sent;
} zend_end_try(); } zend_end_try();
EG(objects_store).object_buckets = old_objects; EG(objects_store).object_buckets = old_objects;
PG(display_errors) = old; PG(display_errors) = old;
@ -2554,12 +2557,14 @@ static void soap_error_handler(int error_num, const char *error_filename, const
} }
PG(display_errors) = 0; PG(display_errors) = 0;
SG(headers_sent) = 1;
zend_try { zend_try {
call_old_error_handler(error_num, error_filename, error_lineno, format, args); call_old_error_handler(error_num, error_filename, error_lineno, format, args);
} zend_catch { } zend_catch {
CG(in_compilation) = _old_in_compilation; CG(in_compilation) = _old_in_compilation;
EG(in_execution) = _old_in_execution; EG(in_execution) = _old_in_execution;
EG(current_execute_data) = _old_current_execute_data; EG(current_execute_data) = _old_current_execute_data;
SG(headers_sent) = _old_headers_sent;
} zend_end_try(); } zend_end_try();
PG(display_errors) = old; PG(display_errors) = old;