From 5280f31d4f7a2ba7783d972665501d7bc3404976 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Tue, 16 Sep 2003 21:51:49 +0000 Subject: [PATCH] Telnet/RLogin and Services servers now have configurable JavaScript operating parameters (in startup structure): context stack size, branch limit, yield interval, and garbage collection interval. --- src/sbbs3/main.cpp | 11 ++++++----- src/sbbs3/services.h | 4 ++++ src/sbbs3/startup.h | 4 ++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index b7e5b3e962..d3b9365c9d 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 346a1a93dd..b7068efe0f 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 268921c5e5..4920fce2d3 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) -- GitLab