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" {