summaryrefslogtreecommitdiff
path: root/Zend/zend_execute_API.c
diff options
context:
space:
mode:
authorRasmus Lerdorf <rasmus@php.net>2008-03-19 15:22:17 +0000
committerRasmus Lerdorf <rasmus@php.net>2008-03-19 15:22:17 +0000
commitd2f23dbe64d92483d5891c050aeadda3a0e58ec2 (patch)
tree470bf66d71985c0cb6149feb0ae57f853f541ef2 /Zend/zend_execute_API.c
parent54482745baf86ea94b7f8c41e5c5156fc111a890 (diff)
downloadphp-git-d2f23dbe64d92483d5891c050aeadda3a0e58ec2.tar.gz
Make sure we set the signal handler when reset_signals is true, regardless
of the actual timeout value.
Diffstat (limited to 'Zend/zend_execute_API.c')
-rw-r--r--Zend/zend_execute_API.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index 59f3e61400..2b939e4147 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -1532,9 +1532,7 @@ void zend_set_timeout(long seconds, int reset_signals) /* {{{ */
TSRMLS_FETCH();
EG(timeout_seconds) = seconds;
- if(!seconds) {
- return;
- }
+
#ifdef ZEND_WIN32
if (timeout_thread_initialized == 0 && InterlockedIncrement(&timeout_thread_initialized) == 1) {
/* We start up this process-wide thread here and not in zend_startup(), because if Zend
@@ -1542,25 +1540,28 @@ void zend_set_timeout(long seconds, int reset_signals) /* {{{ */
*/
zend_init_timeout_thread();
}
- PostThreadMessage(timeout_thread_id, WM_REGISTER_ZEND_TIMEOUT, (WPARAM) GetCurrentThreadId(), (LPARAM) seconds);
+ if(seconds) PostThreadMessage(timeout_thread_id, WM_REGISTER_ZEND_TIMEOUT, (WPARAM) GetCurrentThreadId(), (LPARAM) seconds);
#else
# ifdef HAVE_SETITIMER
{
struct itimerval t_r; /* timeout requested */
sigset_t sigset;
- t_r.it_value.tv_sec = seconds;
- t_r.it_value.tv_usec = t_r.it_interval.tv_sec = t_r.it_interval.tv_usec = 0;
+ if(seconds) {
+ t_r.it_value.tv_sec = seconds;
+ t_r.it_value.tv_usec = t_r.it_interval.tv_sec = t_r.it_interval.tv_usec = 0;
# ifdef __CYGWIN__
- setitimer(ITIMER_REAL, &t_r, NULL);
+ setitimer(ITIMER_REAL, &t_r, NULL);
+ }
if(reset_signals) {
signal(SIGALRM, zend_timeout);
sigemptyset(&sigset);
sigaddset(&sigset, SIGALRM);
}
# else
- setitimer(ITIMER_PROF, &t_r, NULL);
+ setitimer(ITIMER_PROF, &t_r, NULL);
+ }
if(reset_signals) {
signal(SIGPROF, zend_timeout);
sigemptyset(&sigset);