diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c index bad34ffcdf51fb25e1d2bd35cde17b97d1cb64f9..9bea3a54fb2065659d9e3fa4bb2437b58401bb11 100644 --- a/src/sbbs3/websrvr.c +++ b/src/sbbs3/websrvr.c @@ -2443,50 +2443,34 @@ js_BranchCallback(JSContext *cx, JSScript *script) } static JSContext* -js_initcx(JSRuntime* runtime, SOCKET sock, JSObject** glob, http_session_t *session) +js_initcx(http_session_t *session) { JSContext* js_cx; - JSObject* js_glob; - BOOL success=FALSE; lprintf(LOG_INFO,"%04d JavaScript: Initializing context (stack: %lu bytes)" - ,sock,startup->js_cx_stack); + ,session->socket,startup->js_cx_stack); - if((js_cx = JS_NewContext(runtime, startup->js_cx_stack))==NULL) + if((js_cx = JS_NewContext(session->js_runtime, startup->js_cx_stack))==NULL) return(NULL); - lprintf(LOG_INFO,"%04d JavaScript: Context created",sock); + lprintf(LOG_INFO,"%04d JavaScript: Context created",session->socket); JS_SetErrorReporter(js_cx, js_ErrorReporter); JS_SetBranchCallback(js_cx, js_BranchCallback); - do { - - lprintf(LOG_INFO,"%04d JavaScript: Initializing Global object",sock); - if((js_glob=js_CreateGlobalObject(js_cx, &scfg, NULL))==NULL) - break; - - if (!JS_DefineFunctions(js_cx, js_glob, js_global_functions)) - break; - - lprintf(LOG_INFO,"%04d JavaScript: Initializing System object",sock); - if(js_CreateSystemObject(js_cx, js_glob, &scfg, uptime, startup->host_name, SOCKLIB_DESC)==NULL) - break; - - if(js_CreateServerObject(js_cx,js_glob,&js_server_props)==NULL) - break; - - if(glob!=NULL) - *glob=js_glob; - - success=TRUE; - - } while(0); - - if(!success) { + lprintf(LOG_INFO,"%04d JavaScript: Creating Global Objects and Classes",session->socket); + if((session->js_glob=js_CreateGlobalObjects(js_cx, &scfg, NULL + ,NULL /* global */ + ,uptime /* system */ + ,startup->host_name /* system */ + ,SOCKLIB_DESC /* system */ + ,&session->js_branch /* js */ + ,&session->client /* client */ + ,session->socket /* client */ + ))==NULL + || !JS_DefineFunctions(js_cx, session->js_glob, js_global_functions)) { JS_DestroyContext(js_cx); - session->js_cx=NULL; return(NULL); } @@ -2509,24 +2493,11 @@ static BOOL js_setup(http_session_t* session) } if(session->js_cx==NULL) { /* Context not yet created, create it now */ - if(((session->js_cx=js_initcx(session->js_runtime, session->socket - ,&session->js_glob, session))==NULL)) { + if(((session->js_cx=js_initcx(session))==NULL)) { lprintf(LOG_ERR,"%04d !ERROR initializing JavaScript context",session->socket); send_error(session,"500 Error initializing JavaScript context"); return(FALSE); } - if(js_CreateUserClass(session->js_cx, session->js_glob, &scfg)==NULL) - lprintf(LOG_ERR,"%04d !JavaScript ERROR creating user class",session->socket); - - if(js_CreateFileClass(session->js_cx, session->js_glob)==NULL) - lprintf(LOG_ERR,"%04d !JavaScript ERROR creating File class",session->socket); - - if(js_CreateSocketClass(session->js_cx, session->js_glob)==NULL) - lprintf(LOG_ERR,"%04d !JavaScript ERROR creating Socket class",session->socket); - - if(js_CreateMsgBaseClass(session->js_cx, session->js_glob, &scfg)==NULL) - lprintf(LOG_ERR,"%04d !JavaScript ERROR creating MsgBase class",session->socket); - argv=JS_NewArrayObject(session->js_cx, 0, NULL); JS_DefineProperty(session->js_cx, session->js_glob, "argv", OBJECT_TO_JSVAL(argv)