diff options
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r-- | Zend/zend_execute_API.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 34b9957bb7..59f3e61400 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1527,7 +1527,7 @@ void zend_shutdown_timeout_thread(void) /* {{{ */ #define SIGPROF 27 #endif -void zend_set_timeout(long seconds) /* {{{ */ +void zend_set_timeout(long seconds, int reset_signals) /* {{{ */ { TSRMLS_FETCH(); @@ -1554,16 +1554,22 @@ void zend_set_timeout(long seconds) /* {{{ */ # ifdef __CYGWIN__ setitimer(ITIMER_REAL, &t_r, NULL); - signal(SIGALRM, zend_timeout); - sigemptyset(&sigset); - sigaddset(&sigset, SIGALRM); + if(reset_signals) { + signal(SIGALRM, zend_timeout); + sigemptyset(&sigset); + sigaddset(&sigset, SIGALRM); + } # else setitimer(ITIMER_PROF, &t_r, NULL); - signal(SIGPROF, zend_timeout); - sigemptyset(&sigset); - sigaddset(&sigset, SIGPROF); + if(reset_signals) { + signal(SIGPROF, zend_timeout); + sigemptyset(&sigset); + sigaddset(&sigset, SIGPROF); + } # endif - sigprocmask(SIG_UNBLOCK, &sigset, NULL); + if(reset_signals) { + sigprocmask(SIG_UNBLOCK, &sigset, NULL); + } } # endif #endif |