diff --git a/src/syncterm/conn.c b/src/syncterm/conn.c
index 8bab9767999999cc4db0ceff3d195acda80e2c69..9d2b838f012b4a9beea5ca0557af979beffb51a7 100644
--- a/src/syncterm/conn.c
+++ b/src/syncterm/conn.c
@@ -357,6 +357,7 @@ enum failure_reason {
 	,FAILURE_CONNECT_ERROR
 	,FAILURE_ABORTED
 	,FAILURE_GENERAL
+	,FAILURE_DISCONNECTED
 };
 
 int conn_socket_connect(struct bbslist *bbs)
@@ -446,8 +447,10 @@ int conn_socket_connect(struct bbslist *bbs)
 connected:
 	nonblock=0;
 	ioctlsocket(sock, FIONBIO, &nonblock);
-	if(!socket_check(sock, NULL, NULL, 0))
+	if(!socket_check(sock, NULL, NULL, 0)) {
+		failure=FAILURE_DISCONNECTED;
 		goto connect_failed;
+	}
 
 	uifc.pop(NULL);
 	return(sock);
@@ -489,6 +492,12 @@ connect_failed:
 								,"`SyncTERM failed to connect`\n\n"
 								 "The call to select() returned an unexpected error code.");
 				break;
+			case FAILURE_DISCONNECTED:
+				sprintf(str,"Connect error (%d)!",ERROR_VALUE);
+				uifcmsg(str
+								,"`SyncTERM failed to connect`\n\n"
+								 "After connect() succeeded, the socket was in a disconnected state.");
+				break;
 		}
 		conn_close();
 		closesocket(sock);