ssh is littered with open coded checks of errno after a read or write. As a matter of good engineering, these should be consolidated into one routine, try_again(errno). The current set of checks (which are quite inconsistent) fail to include all the values of errno that signal that a retry is called for. For example, EHOSTUNREACH, is an advisory rather than an error. Currently ssh will abort a session when TCP/IP is perfectly happy to continue. Because we want ssh to be robust and reliable, this oversight should be repaired. One might argue that if write constantly returns EHOSTUNREACH then we should quit. That's reasonable, and it underscores that the current behaviour is wrong. It should indeed require many advisories before taking such action.
When are you seeing EHOSTUNREACH? Not on write()...
4 months, no response == no bug
Mass change of RESOLVED bugs to CLOSED