diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 6e8bc5622485cc7b0af6c76400b59cb157f4cf6a..b15633a2b035301cfbc899d4745b3e8731461149 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -2960,10 +2960,9 @@ bool sbbs_t::init()
 	socklen_t	addr_len;
 	SOCKADDR_IN	addr;
 
-	if(cfg.node_num>0) {
-		RingBufInit(&inbuf, IO_THREAD_BUF_SIZE);
+	RingBufInit(&inbuf, IO_THREAD_BUF_SIZE);
+	if(cfg.node_num>0)
 		node_inbuf[cfg.node_num-1]=&inbuf;
-	}
 
     RingBufInit(&outbuf, IO_THREAD_BUF_SIZE);
 	outbuf.highwater_mark=startup->outbuf_highwater_mark;
@@ -3261,7 +3260,7 @@ sbbs_t::~sbbs_t()
 
 	if(cfg.node_num>0)
 		node_inbuf[cfg.node_num-1]=NULL;
-	if(cfg.node_num>0 && !input_thread_running)
+	if(!input_thread_running)
 		RingBufDispose(&inbuf);
 	if(!output_thread_running)
 		RingBufDispose(&outbuf);
@@ -4849,7 +4848,7 @@ NO_SSH:
 		}
 
     	sbbs->online=FALSE;
-		sbbs->client_socket=INVALID_SOCKET;
+//		sbbs->client_socket=INVALID_SOCKET;
 #ifdef USE_CRYPTLIB
 		sbbs->ssh_mode=false;
 #endif
@@ -5154,6 +5153,16 @@ NO_SSH:
 				continue;
 			if(node.status==NODE_WFC) {
 				node.status=NODE_LOGON;
+#ifdef USE_CRYPTLIB
+				if(ssh)
+					node.connection=NODE_CONNECTION_SSH;
+				else
+#endif
+				if(rlogin)
+					node.connection=NODE_CONNECTION_RLOGIN;
+				else
+					node.connection=NODE_CONNECTION_TELNET;
+
 				sbbs->putnodedat(i,&node);
 				break;
 			}