diff -uNr ssh-3.2.9.1.orig/lib/sshreadline/sshreadline.c ssh-3.2.9.1/lib/sshreadline/sshreadline.c --- ssh-3.2.9.1.orig/lib/sshreadline/sshreadline.c 2003-12-03 08:17:20.000000000 -0500 +++ ssh-3.2.9.1/lib/sshreadline/sshreadline.c 2004-02-02 11:18:46.000000000 -0500 @@ -500,8 +500,9 @@ new_term.c_lflag &= ~(ECHO | ICANON); new_term.c_cc[VMIN] = 1; new_term.c_cc[VTIME] = 1; - if (tcsetattr(fd, TCSAFLUSH, &new_term) < 0) + fast: if (tcsetattr(fd, TCSAFLUSH, &new_term) < 0) { + if (EINTR == errno) goto fast; ssh_warning("tcsetattr failed in ssh_rl_set_tty_modes_for_fd: " "fd %d: %.200s", fd, strerror(errno)); return -1; @@ -561,8 +562,9 @@ { fcntl(fd, F_SETFL, fcntl_flags); - if (tcsetattr(fd, TCSAFLUSH, saved_tio) < 0) + fast1: if (tcsetattr(fd, TCSAFLUSH, saved_tio) < 0) { + if (EINTR == errno) goto fast1; ssh_warning("tcsetattr failed in ssh_rl_restore_tty_modes_for_fd: " "fd %d: %.200s", fd, strerror(errno)); return -1; --