From 53862eb5e590fddc5cb5111ae425ff5aef865017 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Mon, 8 Dec 2008 20:13:06 +0000 Subject: [PATCH] Add being/end request calls. Enabling shared runtimes passes the initial touch testing. --- src/sbbs3/ftpsrvr.c | 3 +++ src/sbbs3/js_global.c | 2 ++ src/sbbs3/js_internal.c | 3 +++ src/sbbs3/jsexec.c | 2 ++ src/sbbs3/mailsrvr.c | 5 ++++- src/sbbs3/main.cpp | 3 +++ src/sbbs3/services.c | 8 +++++++- src/sbbs3/websrvr.c | 3 +++ 8 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index ae2be3d3f2..5b2baf7656 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -483,6 +483,7 @@ js_initcx(JSRuntime* runtime, SOCKET sock, JSObject** glob, JSObject** ftp) if((js_cx = JS_NewContext(runtime, startup->js.cx_stack))==NULL) return(NULL); + JS_BeginRequest(js_cx); lprintf(LOG_DEBUG,"%04d JavaScript: Context created",sock); @@ -516,6 +517,7 @@ js_initcx(JSRuntime* runtime, SOCKET sock, JSObject** glob, JSObject** ftp) } while(0); if(!success) { + JS_EndRequest(js_cx); JS_DestroyContext(js_cx); return(NULL); } @@ -4475,6 +4477,7 @@ static void ctrl_thread(void* arg) #ifdef JAVASCRIPT if(js_cx!=NULL) { lprintf(LOG_DEBUG,"%04d JavaScript: Destroying context",sock); + JS_EndRequest(js_cx); JS_DestroyContext(js_cx); /* Free Context */ } diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c index 4746350cbb..456fbedf14 100644 --- a/src/sbbs3/js_global.c +++ b/src/sbbs3/js_global.c @@ -124,6 +124,7 @@ static void background_thread(void* arg) js_EvalOnExit(bg->cx, bg->obj, &bg->branch); js_enqueue_value(bg->cx, bg->msg_queue, result, NULL); JS_DestroyScript(bg->cx, bg->script); + JS_EndRequest(bg->cx); JS_DestroyContext(bg->cx); jsrt_Release(bg->runtime); free(bg); @@ -262,6 +263,7 @@ js_load(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) if((bg->cx = JS_NewContext(bg->runtime, JAVASCRIPT_CONTEXT_STACK))==NULL) return(JS_FALSE); + JS_BeginRequest(bg->cx); if((bg->obj=js_CreateCommonObjects(bg->cx ,p->cfg /* common config */ diff --git a/src/sbbs3/js_internal.c b/src/sbbs3/js_internal.c index bed2f398d7..114030057c 100644 --- a/src/sbbs3/js_internal.c +++ b/src/sbbs3/js_internal.c @@ -267,6 +267,7 @@ js_eval(JSContext *parent_cx, JSObject *parent_obj, uintN argc, jsval *argv, jsv if((cx=JS_NewContext(JS_GetRuntime(parent_cx),JAVASCRIPT_CONTEXT_STACK))==NULL) return(JS_FALSE); + JS_BeginRequest(cx); /* Use the error reporter from the parent context */ reporter=JS_SetErrorReporter(parent_cx,NULL); @@ -285,6 +286,7 @@ js_eval(JSContext *parent_cx, JSObject *parent_obj, uintN argc, jsval *argv, jsv if((obj=JS_NewObject(cx, NULL, NULL, NULL))==NULL || !JS_InitStandardClasses(cx,obj)) { + JS_EndRequest(cx); JS_DestroyContext(cx); return(JS_FALSE); } @@ -294,6 +296,7 @@ js_eval(JSContext *parent_cx, JSObject *parent_obj, uintN argc, jsval *argv, jsv JS_DestroyScript(cx, script); } + JS_EndRequest(cx); JS_DestroyContext(cx); return(JS_TRUE); diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c index ed8e2d794d..bd2c51c624 100644 --- a/src/sbbs3/jsexec.c +++ b/src/sbbs3/jsexec.c @@ -618,6 +618,7 @@ static BOOL js_init(char** environ) if((js_cx = JS_NewContext(js_runtime, js_cx_stack))==NULL) return(FALSE); + JS_BeginRequest(js_cx); if(stack_limit) fprintf(statfp,"JavaScript: Thread stack limit: %lu bytes\n" @@ -1061,6 +1062,7 @@ int main(int argc, char **argv, char** environ) fprintf(statfp,"\n"); fprintf(statfp,"JavaScript: Destroying context\n"); + JS_EndRequest(js_cx); JS_DestroyContext(js_cx); fprintf(statfp,"JavaScript: Destroying runtime\n"); jsrt_Release(js_runtime); diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index a1478fa0b2..dac1893012 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -1624,6 +1624,7 @@ js_mailproc(SOCKET sock, client_t* client, user_t* user if((js_cx = JS_NewContext(js_runtime, startup->js.cx_stack))==NULL) break; + JS_BeginRequest(js_cx); JS_SetErrorReporter(js_cx, js_ErrorReporter); @@ -1722,8 +1723,10 @@ js_mailproc(SOCKET sock, client_t* client, user_t* user } while(0); - if(js_cx!=NULL) + if(js_cx!=NULL) { + JS_EndRequest(js_cx); JS_DestroyContext(js_cx); + } if(js_runtime!=NULL) jsrt_Release(js_runtime); diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index 28d1ee420d..43a2b58bb5 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -1026,6 +1026,7 @@ bool sbbs_t::js_init(ulong* stack_frame) if((js_cx = JS_NewContext(js_runtime, startup->js.cx_stack))==NULL) return(false); + JS_BeginRequest(js_cx); memset(&js_branch,0,sizeof(js_branch)); js_branch.limit = startup->js.branch_limit; @@ -1078,6 +1079,7 @@ bool sbbs_t::js_init(ulong* stack_frame) } while(0); if(!success) { + JS_EndRequest(js_cx); JS_DestroyContext(js_cx); js_cx=NULL; return(false); @@ -3220,6 +3222,7 @@ sbbs_t::~sbbs_t() /* Free Context */ if(js_cx!=NULL) { lprintf(LOG_DEBUG,"%s JavaScript: Destroying context",node); + JS_EndRequest(js_cx); JS_DestroyContext(js_cx); js_cx=NULL; } diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 2c8d04a5ad..8d468674f8 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -831,6 +831,7 @@ js_initcx(JSRuntime* js_runtime, SOCKET sock, service_client_t* service_client, if((js_cx = JS_NewContext(js_runtime, service_client->service->js.cx_stack))==NULL) return(NULL); + JS_BeginRequest(js_cx); JS_SetErrorReporter(js_cx, js_ErrorReporter); @@ -948,6 +949,7 @@ js_initcx(JSRuntime* js_runtime, SOCKET sock, service_client_t* service_client, if(!success) { + JS_EndRequest(js_cx); JS_DestroyContext(js_cx); return(NULL); } @@ -1158,6 +1160,7 @@ static void js_service_thread(void* arg) js_EvalOnExit(js_cx, js_glob, &service_client.branch); JS_DestroyScript(js_cx, js_script); } + JS_EndRequest(js_cx); JS_DestroyContext(js_cx); /* Free Context */ jsrt_Release(js_runtime); @@ -1259,12 +1262,15 @@ static void js_static_service_thread(void* arg) js_EvalOnExit(js_cx, js_glob, &service_client.branch); JS_DestroyScript(js_cx, js_script); + JS_EndRequest(js_cx); JS_DestroyContext(js_cx); /* Free Context */ js_cx=NULL; } while(!service->terminated && service->options&SERVICE_OPT_STATIC_LOOP); - if(js_cx!=NULL) + if(js_cx!=NULL) { + JS_EndRequest(js_cx); JS_DestroyContext(js_cx); /* Free Context */ + } jsrt_Release(js_runtime); diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c index fda0bfda8d..42c2ab7437 100644 --- a/src/sbbs3/websrvr.c +++ b/src/sbbs3/websrvr.c @@ -4386,6 +4386,7 @@ js_initcx(http_session_t *session) if((js_cx = JS_NewContext(session->js_runtime, startup->js.cx_stack))==NULL) return(NULL); + JS_BeginRequest(js_cx); lprintf(LOG_INFO,"%04d JavaScript: Context created",session->socket); @@ -4405,6 +4406,7 @@ js_initcx(http_session_t *session) ,&js_server_props /* server */ ))==NULL || !JS_DefineFunctions(js_cx, session->js_glob, js_global_functions)) { + JS_EndRequest(js_cx); JS_DestroyContext(js_cx); return(NULL); } @@ -5025,6 +5027,7 @@ void http_session_thread(void* arg) if(session.js_cx!=NULL) { lprintf(LOG_INFO,"%04d JavaScript: Destroying context",socket); + JS_EndRequest(session.js_cx); JS_DestroyContext(session.js_cx); /* Free Context */ session.js_cx=NULL; } -- GitLab