diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 413e5beb81cc7c284e08ed3e88a8cbc592614b9d..dc8815a80b62326e5bb6d6fc2f6bbc28a36bb7f7 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -260,6 +260,12 @@ u_long resolve_ip(char *addr)
 
 #ifdef JAVASCRIPT
 
+/* 
+ * @method: log
+ * @syntax: log([value][,value][...])
+ * @arg:	value Variable or constant of any type
+ * @desc:	Print one or more values (typically Strings) in the local log window/display.
+ */
 static JSBool
 js_log(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 {
@@ -284,6 +290,11 @@ js_log(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
     return(JS_TRUE);
 }
 
+/*
+ * @method: print
+ * @usage: print([value][,value][...])
+ */
+
 static JSBool
 js_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 {
@@ -727,7 +738,7 @@ void input_thread(void *arg)
     sbbs->input_thread_running = true;
 	sbbs->console|=CON_R_INPUT;
 
-	while(sbbs->online) {
+	while(sbbs->online && sbbs->client_socket!=INVALID_SOCKET) {
 
 		pthread_mutex_lock(&sbbs->input_thread_mutex);
 
@@ -757,7 +768,6 @@ void input_thread(void *arg)
 			else
 				lprintf("Node %d !ERROR %d input->select socket %d"
                 	,sbbs->cfg.node_num, ERROR_VALUE, sbbs->client_socket);
-			sbbs->online=0;
 			break;
 		}
 
@@ -795,14 +805,12 @@ void input_thread(void *arg)
 			else
 				lprintf("Node %d !ERROR %d receiving from socket %d"
                 	,sbbs->cfg.node_num, ERROR_VALUE, sbbs->client_socket);
-			sbbs->online=0;
 			break;
 		}
 
 		if(rd == 0)
 		{
 			lprintf("Node %d disconnected", sbbs->cfg.node_num);
-			sbbs->online=0;
 			break;
 		}
 
@@ -834,6 +842,7 @@ void input_thread(void *arg)
 //		if(wr>100)
 //			mswait(500);	// Throttle sender
 	}
+	sbbs->online=0;
 
     sbbs->input_thread_running = false;
 	if(node_socket[sbbs->cfg.node_num-1]==INVALID_SOCKET)	// Shutdown locally
@@ -3501,7 +3510,8 @@ void DLLCALL bbs_thread(void* arg)
 		FD_ZERO(&socket_set);
 		FD_SET(telnet_socket,&socket_set);
 		high_socket_set=telnet_socket+1;
-		if(startup->options&BBS_OPT_ALLOW_RLOGIN) {
+		if(startup->options&BBS_OPT_ALLOW_RLOGIN 
+			&& rlogin_socket!=INVALID_SOCKET) {
 			FD_SET(rlogin_socket,&socket_set);
 			if(rlogin_socket+1>high_socket_set)
 				high_socket_set=rlogin_socket+1;