- (djm) [channels.c channels.h] bz#2135: On Solaris, isatty() on a non-
blocking connecting socket will clear any stored errno that might otherwise have been retrievable via getsockopt(). A hack to limit writes to TTYs on AIX was triggering this. Since only AIX needs the hack, wrap it in an #ifdef. Diagnosis and patch from Ivo Raisr.
This commit is contained in:
parent
81f7cf1ec5
commit
c192a4c4f6
|
@ -1,3 +1,10 @@
|
||||||
|
20130801
|
||||||
|
- (djm) [channels.c channels.h] bz#2135: On Solaris, isatty() on a non-
|
||||||
|
blocking connecting socket will clear any stored errno that might
|
||||||
|
otherwise have been retrievable via getsockopt(). A hack to limit writes
|
||||||
|
to TTYs on AIX was triggering this. Since only AIX needs the hack, wrap
|
||||||
|
it in an #ifdef. Diagnosis and patch from Ivo Raisr.
|
||||||
|
|
||||||
20130725
|
20130725
|
||||||
- (djm) OpenBSD CVS Sync
|
- (djm) OpenBSD CVS Sync
|
||||||
- djm@cvs.openbsd.org 2013/07/20 22:20:42
|
- djm@cvs.openbsd.org 2013/07/20 22:20:42
|
||||||
|
|
|
@ -248,7 +248,10 @@ channel_register_fds(Channel *c, int rfd, int wfd, int efd,
|
||||||
|
|
||||||
if ((c->isatty = is_tty) != 0)
|
if ((c->isatty = is_tty) != 0)
|
||||||
debug2("channel %d: rfd %d isatty", c->self, c->rfd);
|
debug2("channel %d: rfd %d isatty", c->self, c->rfd);
|
||||||
|
#ifdef _AIX
|
||||||
|
/* XXX: Later AIX versions can't push as much data to tty */
|
||||||
c->wfd_isatty = is_tty || isatty(c->wfd);
|
c->wfd_isatty = is_tty || isatty(c->wfd);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* enable nonblocking mode */
|
/* enable nonblocking mode */
|
||||||
if (nonblock) {
|
if (nonblock) {
|
||||||
|
|
|
@ -103,7 +103,9 @@ struct Channel {
|
||||||
int sock; /* sock fd */
|
int sock; /* sock fd */
|
||||||
int ctl_chan; /* control channel (multiplexed connections) */
|
int ctl_chan; /* control channel (multiplexed connections) */
|
||||||
int isatty; /* rfd is a tty */
|
int isatty; /* rfd is a tty */
|
||||||
|
#ifdef _AIX
|
||||||
int wfd_isatty; /* wfd is a tty */
|
int wfd_isatty; /* wfd is a tty */
|
||||||
|
#endif
|
||||||
int client_tty; /* (client) TTY has been requested */
|
int client_tty; /* (client) TTY has been requested */
|
||||||
int force_drain; /* force close on iEOF */
|
int force_drain; /* force close on iEOF */
|
||||||
time_t notbefore; /* Pause IO until deadline (time_t) */
|
time_t notbefore; /* Pause IO until deadline (time_t) */
|
||||||
|
|
Loading…
Reference in New Issue