diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c
index f7fcd1ac185024796172194000f7e16b29b01286..3fbde907aaa2bd714fd2b7515f16d5fb8071cf81 100644
--- a/src/sbbs3/websrvr.c
+++ b/src/sbbs3/websrvr.c
@@ -744,6 +744,11 @@ static void close_request(http_session_t * session)
 	if(session->socket==INVALID_SOCKET)
 		session->finished=TRUE;
 
+	if(session->js_cx!=NULL && (session->req.dynamic==IS_SSJS || session->req.dynamic==IS_JS)) {
+		lprintf(LOG_INFO,"%04d JavaScript: Garbage Collection",session->socket);
+		JS_GC(session->js_cx);
+	}
+
 	memset(&session->req,0,sizeof(session->req));
 }
 
@@ -2800,6 +2805,7 @@ void http_session_thread(void* arg)
 	if(session.js_runtime!=NULL) {
 		lprintf(LOG_INFO,"%04d JavaScript: Destroying runtime",socket);
 		JS_DestroyRuntime(session.js_runtime);
+		session.js_runtime=NULL;
 	}
 
 #ifdef _WIN32