=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/sftp.c,v retrieving revision 1.176 retrieving revision 1.177 diff -u -r1.176 -r1.177 --- src/usr.bin/ssh/sftp.c 2016/09/12 01:22:38 1.176 +++ src/usr.bin/ssh/sftp.c 2016/10/18 12:41:22 1.177 @@ -1,4 +1,4 @@ -/* $OpenBSD: sftp.c,v 1.176 2016/09/12 01:22:38 deraadt Exp $ */ +/* $OpenBSD: sftp.c,v 1.177 2016/10/18 12:41:22 millert Exp $ */ /* * Copyright (c) 2001-2004 Damien Miller * @@ -210,6 +210,18 @@ /* ARGSUSED */ static void +suspchild(int signo) +{ + if (sshpid > 1) { + kill(sshpid, signo); + while (waitpid(sshpid, NULL, WUNTRACED) == -1 && errno == EINTR) + continue; + } + kill(getpid(), SIGSTOP); +} + +/* ARGSUSED */ +static void cmd_interrupt(int signo) { const char msg[] = "\rInterrupt \n"; @@ -2171,6 +2183,9 @@ signal(SIGTERM, killchild); signal(SIGINT, killchild); signal(SIGHUP, killchild); + signal(SIGTSTP, suspchild); + signal(SIGTTIN, suspchild); + signal(SIGTTOU, suspchild); close(c_in); close(c_out); }