The TelnetInputStream catches InterruptedException in the read() method (line 342) and throws a new IOException without wrapping the InterruptedException. This means that the fact that the read() method was interrupted can hardly be distinguished from any other IOException.
I use thread interruption as a cancellation mechanism for a thread that uses the TelnetInputStream to read data.
The read method is not allowed to throw InterruptedException, so I propose to fix it by at least wrapping the underlying InterruptedException:
catch (InterruptedException e)
throw new IOException("Fatal thread interruption during read.", e);