diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index b7e5b3e96235789f1c2bee395f4d8d61de321db5..d3b9365c9db502677248c3a21b956f311861c45a 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -758,14 +758,14 @@ bool sbbs_t::js_init()
 		return(false);
 
 	lprintf("%s JavaScript: Initializing context (stack: %lu bytes)"
-		,node,JAVASCRIPT_CONTEXT_STACK);
+		,node,startup->js_cx_stack);
 
-    if((js_cx = JS_NewContext(js_runtime, JAVASCRIPT_CONTEXT_STACK))==NULL)
+    if((js_cx = JS_NewContext(js_runtime, startup->js_cx_stack))==NULL)
 		return(false);
 
-	js_branch.limit = JAVASCRIPT_BRANCH_LIMIT;
-	js_branch.gc_interval = JAVASCRIPT_GC_INTERVAL;
-	js_branch.yield_interval = JAVASCRIPT_YIELD_INTERVAL;
+	js_branch.limit = startup->js_branch_limit;
+	js_branch.gc_interval = startup->js_gc_interval;
+	js_branch.yield_interval = startup->js_yield_interval;
 	js_branch.counter = 0;	/* loop counter */
 	js_branch.terminated = (BOOL*)&terminated;
 
@@ -3551,6 +3551,7 @@ void DLLCALL bbs_thread(void* arg)
 	if(startup->xtrn_polls_before_yield==0)	startup->xtrn_polls_before_yield=10;
 #ifdef JAVASCRIPT
 	if(startup->js_max_bytes==0)			startup->js_max_bytes=JAVASCRIPT_MAX_BYTES;
+	if(startup->js_cx_stack==0)				startup->js_cx_stack=JAVASCRIPT_CONTEXT_STACK;
 #endif
 	if(startup->outbuf_drain_timeout==0)	startup->outbuf_drain_timeout=10;
 	if(startup->sem_chk_freq==0)			startup->sem_chk_freq=5;
diff --git a/src/sbbs3/services.h b/src/sbbs3/services.h
index 346a1a93dd01fc4667b7d81b590fcd5e3c1854f2..b7068efe0fd2efdfb2963435fb52c1c9144edb35 100644
--- a/src/sbbs3/services.h
+++ b/src/sbbs3/services.h
@@ -50,6 +50,10 @@ typedef struct {
     DWORD   interface_addr;
     DWORD	options;			/* See BBS_OPT definitions */
     DWORD	js_max_bytes;
+	DWORD	js_cx_stack;
+	DWORD	js_branch_limit;
+	DWORD	js_yield_interval;
+	DWORD	js_gc_interval;
 	WORD	sem_chk_freq;		/* semaphore file checking frequency (in seconds) */
 	int 	(*lputs)(char*);		/* Log - put string */
 	void	(*status)(char*);
diff --git a/src/sbbs3/startup.h b/src/sbbs3/startup.h
index 268921c5e5655a9df4fe8ef5fdb1cc7931f50ed1..4920fce2d30e4efb4caa28c787e0814b22ce87f8 100644
--- a/src/sbbs3/startup.h
+++ b/src/sbbs3/startup.h
@@ -61,6 +61,10 @@ typedef struct {
     DWORD	rlogin_interface;
     DWORD	xtrn_polls_before_yield;
     DWORD	js_max_bytes;
+	DWORD	js_cx_stack;
+	DWORD	js_branch_limit;
+	DWORD	js_yield_interval;
+	DWORD	js_gc_interval;
     RingBuf** node_spybuf;		// Spy output buffer (each node)
     RingBuf** node_inbuf;		// User input buffer (each node)
     sem_t**	node_spysem;		// Spy output semaphore (each node)