1 Commits

Author SHA1 Message Date
Frank Rolsted Jensen eaf30f067c Clear pollin flag when input buffer is flushed
The pollin flag must be cleared when the input buffer (pty slave) is
flushed. This ensures that the POLLIN event is not signaled to the application,
when there is not data to read.
2021-10-27 15:44:09 +02:00
2 changed files with 3 additions and 18 deletions
+1 -2
View File
@@ -60,12 +60,11 @@ extern void telnet_rfc2217_ctl(tn_ctx_t * tcc, unsigned int val);
/*RFC2217 control commands*/
#define TNS_CTL_NOFLOW 1
#define TNS_CTL_XONOFF_OUT 2
#define TNS_CTL_XONOFF 2
#define TNS_CTL_CTSRTS 3
#define TNS_CTL_DTR_ON 8
#define TNS_CTL_DTR_OFF 9
#define TNS_CTL_RTS_ON 11
#define TNS_CTL_RTS_OFF 12
#define TNS_CTL_XONOFF_IN 15
#endif /*TELNET_H */
+2 -16
View File
@@ -855,22 +855,6 @@ ttynvt_ioctl(fuse_req_t req, int cmd, void *arg,
tty->master_suspended = (tty->smcr & TIOCM_CTS) ? 0 : 1;
telnet_rfc2217_ctl(tty->tn, TNS_CTL_CTSRTS);
}
else if ((tio->c_iflag & IXON) && (tio->c_iflag & IXOFF))
{
tty->master_suspended = 0;
telnet_rfc2217_ctl(tty->tn, TNS_CTL_XONOFF_OUT);
telnet_rfc2217_ctl(tty->tn, TNS_CTL_XONOFF_IN);
}
else if (tio->c_iflag & IXON)
{
tty->master_suspended = 0;
telnet_rfc2217_ctl(tty->tn, TNS_CTL_XONOFF_OUT);
}
else if (tio->c_iflag & IXOFF)
{
tty->master_suspended = 0;
telnet_rfc2217_ctl(tty->tn, TNS_CTL_XONOFF_IN);
}
else
{
tty->master_suspended = 0;
@@ -934,6 +918,7 @@ ttynvt_ioctl(fuse_req_t req, int cmd, void *arg,
case TCIFLUSH:
byte = 1;
tty->slave_suspended = 0; /* Re-enable polling of Slave */
tty->pollin = 0;
break;
case TCOFLUSH:
byte = 2;
@@ -943,6 +928,7 @@ ttynvt_ioctl(fuse_req_t req, int cmd, void *arg,
byte = 3;
tty->slave_suspended = 0; /* Re-enable polling of Slave */
tty->pollout = 1;
tty->pollin = 0;
break;
}
telnet_rfc2217_cfg(tty->tn, TNS_SET_PURGE, &byte, 1);