--- 0.11.2/session.c	2025-06-24 15:34:42.000000000 +0200
+++ session.c	2025-07-09 03:31:16.622100216 +0200
@@ -942,6 +942,24 @@
     session->session_state = SSH_SESSION_STATE_ERROR;
     if (errno_code == 0 && code == SSH_SOCKET_EXCEPTION_EOF) {
         ssh_set_error(session, SSH_FATAL, "Socket error: disconnected");
+#ifdef _WIN32
+    } else if (errno_code ==10050) { // WSAENETDOWN
+        ssh_set_error(session, SSH_FATAL, "Socket error: network down");
+    } else if (errno_code == 10051) { // WSAENETUNREACH
+        ssh_set_error(session, SSH_FATAL, "Socket error: network unreachable");
+    } else if (errno_code == 10052) { // WSAENETRESET
+        ssh_set_error(session, SSH_FATAL, "Socket error: network reset");
+    } else if (errno_code == 10053) { // WSAECONNABORTED
+        ssh_set_error(session, SSH_FATAL, "Socket error: connection aborted");
+    } else if (errno_code == 10054) { // WSAECONNRESET
+        ssh_set_error(session, SSH_FATAL, "Socket error: connection reset by peer");
+    } else if (errno_code == 10060) { // WSAETIMEDOUT
+        ssh_set_error(session, SSH_FATAL, "Socket error: connection timed out");
+    } else if (errno_code == 10061) { // WSAECONNREFUSED
+        ssh_set_error(session, SSH_FATAL, "Socket error: connection refused");
+    } else if (errno_code == 10065) { // WSAEHOSTUNREACH
+        ssh_set_error(session, SSH_FATAL, "Socket error: host unreachable");
+#endif
     } else {
         char err_msg[SSH_ERRNO_MSG_MAX] = {0};
         ssh_set_error(session, SSH_FATAL, "Socket error: %s",
