From 0bc2bb05d4b0053db86f92ca23538e47637876ab Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Thu, 31 Aug 2000 16:02:51 +0000 Subject: [PATCH] Safer shutdown process. Continue to shut down even if we bail out in the middle of a certain part. --- main/main.c | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/main/main.c b/main/main.c index 735d6c1b3c3..a6afda00648 100644 --- a/main/main.c +++ b/main/main.c @@ -636,28 +636,43 @@ void php_request_shutdown(void *dummy) SLS_FETCH(); PLS_FETCH(); - if (setjmp(EG(bailout))!=0) { - return; + if (setjmp(EG(bailout)==0) { + sapi_send_headers(); } - sapi_send_headers(); - php_end_ob_buffers(SG(request_info).headers_only?0:1); + if (setjmp(EG(bailout)==0) { + php_end_ob_buffers(SG(request_info).headers_only?0:1); + } - php_call_shutdown_functions(); + if (setjmp(EG(bailout)==0) { + php_call_shutdown_functions(); + } if (PG(modules_activated)) { zend_deactivate_modules(); } - php_ini_rshutdown(); + if (setjmp(EG(bailout)==0) { + php_ini_rshutdown(); + } zend_deactivate(CLS_C ELS_CC); - sapi_deactivate(SLS_C); - shutdown_memory_manager(CG(unclean_shutdown), 0); - zend_unset_timeout(); + if (setjmp(EG(bailout)==0) { + sapi_deactivate(SLS_C); + } - global_unlock(); + if (setjmp(EG(bailout)==0) { + shutdown_memory_manager(CG(unclean_shutdown), 0); + } + + if (setjmp(EG(bailout)==0) { + zend_unset_timeout(); + } + + if (setjmp(EG(bailout)==0) { + global_unlock(); + } }