diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index ae2be3d3f2d16785199d883b20adae6b9393f841..09227cd851afdbc9f6bd2bb241840c14ce35ed50 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); } @@ -974,8 +976,8 @@ BOOL js_generate_index(JSContext* js_cx, JSObject* parent, } } globfree(&g); + JS_ResumeRequest(js_cx, rc); } - JS_ResumeRequest(js_cx, rc); /* RUN SCRIPT */ @@ -3885,6 +3887,7 @@ static void ctrl_thread(void* arg) } if(js_cx==NULL) { /* Context not yet created, create it now */ + /* js_initcx() starts a request */ if(((js_cx=js_initcx(js_runtime, sock,&js_glob,&js_ftp))==NULL)) { lprintf(LOG_ERR,"%04d !ERROR initializing JavaScript context",sock); sockprintf(sock,"451 Error initializing JavaScript context"); @@ -3907,6 +3910,8 @@ static void ctrl_thread(void* arg) ,startup->html_index_file)==NULL) lprintf(LOG_ERR,"%04d !JavaScript ERROR creating file area object",sock); } + else + JS_BeginRequest(js_cx); if((js_str=JS_NewStringCopyZ(js_cx, "name"))!=NULL) { js_val=STRING_TO_JSVAL(js_str); @@ -3950,6 +3955,7 @@ static void ctrl_thread(void* arg) js_val=BOOLEAN_TO_JSVAL(INT_TO_BOOL(user.misc&EXTDESC)); JS_SetProperty(js_cx, js_ftp, "extended_descriptions", &js_val); + JS_EndRequest(js_cx); #endif if((fp=fopen(ftp_tmpfname(fname,"html",sock),"w+b"))==NULL) { lprintf(LOG_ERR,"%04d !ERROR %d opening %s",sock,errno,fname); @@ -3964,10 +3970,12 @@ static void ctrl_thread(void* arg) tmpfile=TRUE; delfile=TRUE; #ifdef JAVASCRIPT + JS_BeginRequest(js_cx); js_val=INT_TO_JSVAL(timeleft); if(!JS_SetProperty(js_cx, js_ftp, "time_left", &js_val)) lprintf(LOG_ERR,"%04d !JavaScript ERROR setting user.time_left",sock); js_generate_index(js_cx, js_ftp, sock, fp, lib, dir, &user); + JS_EndRequest(js_cx); #endif fclose(fp); }