tfix a deadlock. - plan9port - [fork] Plan 9 from user space (HTM) git clone git://src.adamsgaard.dk/plan9port (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 99c75f3c503b7b3d667c251e90170bf7e10037ce (DIR) parent 0e25d6094f3afc39eea454adcbcb01827906ba3e (HTM) Author: rsc <devnull@localhost> Date: Tue, 20 Apr 2004 15:16:18 +0000 fix a deadlock. Diffstat: M src/cmd/9term/bsdpty.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) --- (DIR) diff --git a/src/cmd/9term/bsdpty.c b/src/cmd/9term/bsdpty.c t@@ -106,7 +106,13 @@ setecho(int fd, int newe) if(old != newe){ ttmode.c_lflag &= ~ECHO; ttmode.c_lflag |= newe; - if(tcsetattr(fd, TCSADRAIN, &ttmode) < 0) + /* + * I tried using TCSADRAIN here, but that causes + * hangs if there is any output waiting for us. + * I guess TCSADRAIN is intended for use by our + * clients, not by us. + */ + if(tcsetattr(fd, 0, &ttmode) < 0) fprint(2, "tcsetattr: %r\n"); } return old;