diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 957736add671297900fb1b37fca364bf17dd834f..df4ed65a3a4d910f98ec2eecdba83a8bbcb8e66b 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -956,7 +956,11 @@ static void js_static_service_thread(void* arg) lprintf("%04d !JavaScript FAILED to compile script (%s)",service->socket,spath); else { JS_SetBranchCallback(js_cx, js_BranchCallback); - JS_ExecuteScript(js_cx, js_glob, js_script, &rval); + + do { + JS_ExecuteScript(js_cx, js_glob, js_script, &rval); + } while(!service->terminated && service->options&SERVICE_OPT_STATIC_LOOP); + JS_DestroyScript(js_cx, js_script); } JS_DestroyContext(js_cx); /* Free Context */ diff --git a/src/sbbs3/services.h b/src/sbbs3/services.h index d18aef4bb1d680d835f6231d74de227b3c26d98b..3c44c1d3ceca2580b63d76bf4bff1fd1c7ce8f81 100644 --- a/src/sbbs3/services.h +++ b/src/sbbs3/services.h @@ -71,7 +71,8 @@ typedef struct { /* Option bit definitions */ #define SERVICE_OPT_UDP (1<<0) /* UDP Socket */ -#define SERVICE_OPT_STATIC (1<<1) /* Static server (accepts client connectsions) */ +#define SERVICE_OPT_STATIC (1<<1) /* Static service (accepts client connectsions) */ +#define SERVICE_OPT_STATIC_LOOP (1<<2) /* Loop static service until terminated */ #ifdef __cplusplus extern "C" {