diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index 9ee775fe594c7f606902fd57bb026af57e73995b..961369ef888c8a8cbb7d0a3375cb54536952f3f9 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -72,8 +72,6 @@
 #define MAX_SERVICES			128
 #define TIMEOUT_THREAD_WAIT		30		/* Seconds */
 
-#define STATUS_WFC	"Listening"
-
 static services_startup_t* startup=NULL;
 static scfg_t	scfg;
 static int		active_clients=0;
@@ -379,9 +377,9 @@ js_initcx(SOCKET sock, client_t* client, service_client_t* service_client, JSObj
 
 	} while(0);
 
-	JS_EndRequest(js_cx);		/* Required for multi-thread support */
 
 	if(!success) {
+		JS_EndRequest(js_cx);		/* Required for multi-thread support */
 		JS_DestroyContext(js_cx);
 		return(NULL);
 	}
@@ -491,8 +489,6 @@ static void js_service_thread(void* arg)
 		args=p+1;
 	}
 
-	JS_BeginRequest(js_cx);	/* Required for multi-thread support */
-
 	argv=JS_NewArrayObject(js_cx, 0, NULL);
 
 	if(args!=NULL && argv!=NULL) {
@@ -519,7 +515,6 @@ static void js_service_thread(void* arg)
 		,NULL,NULL,JSPROP_READONLY);
 
 	js_script=JS_CompileFile(js_cx, js_glob, spath);
-	JS_EndRequest(js_cx);
 
 	if(js_script==NULL) 
 		lprintf("%04d !JavaScript FAILED to compile script (%s)",socket,spath);
@@ -527,6 +522,9 @@ static void js_service_thread(void* arg)
 		JS_ExecuteScript(js_cx, js_glob, js_script, &rval);
 		JS_DestroyScript(js_cx, js_script);
 	}
+	close_socket(socket);
+
+	JS_EndRequest(js_cx);
 
 //	lprintf("%04d JavaScript: Destroying context",socket);
 	JS_DestroyContext(js_cx);	/* Free Context */
@@ -535,7 +533,6 @@ static void js_service_thread(void* arg)
 	if(service->clients)
 		service->clients--;
 
-	close_socket(socket);
 	active_clients--;
 	update_clients();
 	client_off(socket);
@@ -795,7 +792,15 @@ void DLLCALL services_thread(void* arg)
 		}
 		service[i].socket=socket;
 	}
-				
+
+	/* signal caller that we've started up successfully */
+    if(startup->started!=NULL)
+    	startup->started();
+
+	status("Listening");
+		
+	terminated=FALSE;
+
 	/* Main Server Loop */
 	while(!terminated) {