From a7cb1572f040e4383f24c85bcb678b2e1fb4b39d Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Mon, 7 Jul 2003 21:44:56 +0000
Subject: [PATCH] Created new service option bit: SERVICE_OPT_STATIC_LOOP which
 loops a static service until the terminated property is set.

---
 src/sbbs3/services.c | 6 +++++-
 src/sbbs3/services.h | 3 ++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index 957736add6..df4ed65a3a 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 d18aef4bb1..3c44c1d3ce 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" {
-- 
GitLab