summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--ext/soap/soap.c7
2 files changed, 7 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 0a3674bc20..729e29de95 100644
--- a/NEWS
+++ b/NEWS
@@ -46,6 +46,7 @@ PHP NEWS
- Fixed possible crash in ext/soap because of uninitialized value (Zdash Urf)
- Fixed bug #42848 (Status: header incorrect under FastCGI). (Dmitry)
+- Fixed bug #42773 (WSDL error causes HTTP 500 Response). (Dmitry)
- Fixed bug #42737 (preg_split('//u') triggers a E_NOTICE with newlines). (Nuno)
- Fixed bug #42657 (ini_get() returns incorrect value when default is NULL).
(Jani)
diff --git a/ext/soap/soap.c b/ext/soap/soap.c
index d2a8670b34..0bbd33aa18 100644
--- a/ext/soap/soap.c
+++ b/ext/soap/soap.c
@@ -2040,13 +2040,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);
@@ -2104,12 +2105,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;
@@ -2182,12 +2185,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;