>> ssh так написан. Он считает любую разовую ошибку отправки типа EHOSTUNREACH >> фатальной и самостоятельно рвет соединение. Используй screen/tmux. >> А вот telnet так не делал. DM> Что-то ничего не понятно. DM> Hаверное вместо EHOSTUNREACH имелся ввиду ENETUNREACH,
ENETUNREACH, по-моему, сейчас не используется.
DM> но все равно такая ошибка допустима только в connect() или DM> для датраграмных сокетов. DM> Hу допустим кто-то как обычно не дописал доку и действительно DM> какая-то из этих ошибок посылается в ответ на write. Что тут DM> можно поделать? Временная ошибка или нет не важно - сокет DM> все равно в недопустимом состоянии и ничего кроме close() с ним DM> делать нельзя. Как мог телнет из этого выкручиваться?!
С чего бы это в недопустимом? Сокет полностью в норме, установлен, а то что промежуточный маршрут потерялся, сокета вообще не касается. Как потерялся, так и восстановится. Во времена диалапа этим пользовался вовсю.