connect to host … : Unknown error for WSAEHOSTUNREACH / WSAENETUNREACH (no errno mapping)
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 76/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- c
- Domain
- networking
Research direction
Start in contrib/win32/win32compat/socketio.c at errno_from_WSAError(), where the issue identifies missing mappings for WSAEHOSTUNREACH and WSAENETUNREACH; check misc.c for the corresponding error strings. Run the relevant Windows connection tests, if available, and confirm unreachable hosts produce a meaningful error instead of “Unknown error.”
Written by the indexing model from the issue text.
Description
Summary
When the TCP connect fails because the host or network is unreachable (for example, Wi-Fi drops), ssh prints
ssh: connect to host 192.168.0.63 port 22: Unknown error
instead of a meaningful message. Tools that parse ssh's output to decide whether a failure is transient can't classify it. VS Code Remote-SSH, for example, treats it as a permanent error and stops reconnecting.
Steps to reproduce
ssh -F NUL -o BatchMode=yes [email protected](no route) →ssh: connect to host 240.0.0.1 port 22: Unknown error, instantly.- Or, with Wi-Fi disconnected (
netsh wlan disconnect),ssh <LAN host>→ sameUnknown error. .NET reports the same connect asSocketError.HostUnreachable(10065).
Expected
No route to host / Network is unreachable (or at least a message naming the Winsock error).
Actual
Unknown error.
Cause
contrib/win32/win32compat/socketio.c, errno_from_WSAError() maps only a handful of WSA codes. Everything else falls to
default:
return wsaerrno - 10000;
So WSAEHOSTUNREACH (10065) becomes errno 65 and WSAENETUNREACH (10051) becomes 51. w32_strerror() in misc.c only has strings for EADDRINUSE..EWOULDBLOCK (100–140), so strerror_s returns "Unknown error" for those values.
Suggested fix: add explicit cases:
WSAENETDOWN→ENETDOWNWSAENETUNREACH→ENETUNREACHWSAEHOSTUNREACH→EHOSTUNREACHWSAEADDRNOTAVAIL→EADDRNOTAVAIL
Optionally, use the POSIX/glibc wording in _sys_errlist_ext ("No route to host", "Network is unreachable"); the current "Host is unreachable" and "Network unreachable" differ from what other platforms print and from what scripts match.
Version
OpenSSH_for_Windows_9.5p1, LibreSSL 3.8.2(Windows 10 Pro 22H2 19045, built-in)- Same code in
v10.4.0.0(socketio.cunchanged).
- Dominant language
- No language data
- Stars
- 8.3k
- Forks
- 822
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 2
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from PowerShell/Win32-OpenSSH
-
Area-ssh-agent Issue-Upstream Parity
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
PowerShell/Win32-OpenSSH#2458 · 1 comment · 1 reaction ·
-
Difficulty 4/5 3-5 days Newbie friendliness 10/100
PowerShell/Win32-OpenSSH#2480 · 2 comments · 1 reaction ·
-
ssh -t exec path concatenates the command unquoted — GNU-style -c shells lose all but the first wordPossibly taken @caomengxuan666 claimed this 5 days ago. Open
Difficulty 3/5 1-2 days Newbie friendliness 62/100
PowerShell/Win32-OpenSSH#2478 · 1 reaction ·
-
Difficulty 4/5 3-5 days Newbie friendliness 42/100
PowerShell/Win32-OpenSSH#2476 · 1 comment · 1 reaction ·
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
PowerShell/Win32-OpenSSH#2472 · 1 comment · 1 reaction ·
All issues in PowerShell/Win32-OpenSSH
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
rossoctl/cortex#1546 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
apache/openserverless#282 · 2 comments ·
-
Type: Bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
inverse-inc/packetfence#9605 ·
Maintainers usually reply within 10 days
-
needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SoftEtherVPN/SoftEtherVPN#2322 ·
Maintainers usually reply within 1 day