diff options
author | rsc <devnull@localhost> | 2004-04-20 15:16:18 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-04-20 15:16:18 +0000 |
commit | 99c75f3c503b7b3d667c251e90170bf7e10037ce (patch) | |
tree | dedfac36db34873170424b7801d77781d2ad978a | |
parent | 0e25d6094f3afc39eea454adcbcb01827906ba3e (diff) | |
download | plan9port-99c75f3c503b7b3d667c251e90170bf7e10037ce.tar.gz plan9port-99c75f3c503b7b3d667c251e90170bf7e10037ce.tar.bz2 plan9port-99c75f3c503b7b3d667c251e90170bf7e10037ce.zip |
fix a deadlock.
-rw-r--r-- | src/cmd/9term/bsdpty.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/cmd/9term/bsdpty.c b/src/cmd/9term/bsdpty.c index b5e09195..0de9137d 100644 --- a/src/cmd/9term/bsdpty.c +++ b/src/cmd/9term/bsdpty.c @@ -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; |