diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index c1ea103c01742ba2acd06beb1e1b33ecf2f1ef7b..5e7c8e9d630e8818d29ad68d270165c15e5c44ee 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -185,6 +185,30 @@ int close_socket(SOCKET sock)
 	return(result);
 }
 
+/* Return true if connected */
+bool socket_check(SOCKET sock)
+{
+	char	ch;
+	int		i;
+	fd_set	socket_set;
+	struct	timeval tv;
+
+	FD_ZERO(&socket_set);
+	FD_SET(sock,&socket_set);
+
+	tv.tv_sec=0;
+	tv.tv_usec=0;
+
+	i=select(sock+1,&socket_set,NULL,NULL,&tv);
+	if(i==SOCKET_ERROR)
+		return(false);
+
+	if(i==0 || recv(sock,&ch,1,MSG_PEEK)==1) 
+		return(true);
+
+	return(false);
+}
+
 u_long resolve_ip(char *addr)
 {
 	HOSTENT*	host;