diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c index 5d1c9dd41e2f36443fa4b6ea64de51902ac14315..3ad9617202bbdd3f867965298d6710963768f60c 100644 --- a/src/sbbs3/jsexec.c +++ b/src/sbbs3/jsexec.c @@ -65,7 +65,7 @@ char host_name_buf[128]; BOOL pause_on_exit=FALSE; BOOL pause_on_error=FALSE; BOOL terminated=FALSE; -BOOL recycled=FALSE; +BOOL recycled; DWORD log_mask=DEFAULT_LOG_MASK; int err_level=DEFAULT_ERR_LOG_LVL; @@ -858,10 +858,7 @@ int main(int argc, char **argv, char** environ) signal(SIGINT,break_handler); signal(SIGTERM,break_handler); - if(loop) - signal(SIGHUP,recycle_handler); - else - signal(SIGHUP,SIG_IGN); + signal(SIGHUP,recycle_handler); /* Don't die on SIGPIPE */ signal(SIGPIPE,SIG_IGN); @@ -869,6 +866,8 @@ int main(int argc, char **argv, char** environ) do { + recycled=FALSE; + if(!js_init(environ)) { lprintf(LOG_ERR,"!JavaScript initialization failure\n"); bail(1); @@ -883,7 +882,7 @@ int main(int argc, char **argv, char** environ) fprintf(statfp,"JavaScript: Destroying runtime\n"); JS_DestroyRuntime(js_runtime); - } while(loop && !terminated); + } while((recycled || loop) && !terminated); bail(result);