Fix serial purge - TCIFLUSH was not working correctly.

git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/rdesktop/trunk@1633 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Peter Åstrand 2011-09-22 12:28:35 +00:00
parent 25d2d69f63
commit 1e857787d8

View File

@ -894,13 +894,13 @@ serial_device_control(RD_NTHANDLE handle, uint32 request, STREAM in, STREAM out)
case SERIAL_PURGE:
in_uint32(in, purge_mask);
DEBUG_SERIAL(("serial_ioctl -> SERIAL_PURGE purge_mask %X\n", purge_mask));
flush_mask = 0;
if (purge_mask & SERIAL_PURGE_TXCLEAR)
flush_mask |= TCOFLUSH;
if (purge_mask & SERIAL_PURGE_RXCLEAR)
flush_mask |= TCIFLUSH;
if (flush_mask != 0)
tcflush(handle, flush_mask);
if ((purge_mask & SERIAL_PURGE_TXCLEAR)
&& (purge_mask & SERIAL_PURGE_RXCLEAR))
tcflush(handle, TCIOFLUSH);
else if (purge_mask & SERIAL_PURGE_TXCLEAR)
tcflush(handle, TCOFLUSH);
else if (purge_mask & SERIAL_PURGE_RXCLEAR)
tcflush(handle, TCIFLUSH);
if (purge_mask & SERIAL_PURGE_TXABORT)
rdpdr_abort_io(handle, 4, RD_STATUS_CANCELLED);
if (purge_mask & SERIAL_PURGE_RXABORT)