TelnetInputStream doesn't support non-blocking IO when reader thread is not
enabled
-----------------------------------------------------------------------------------
Key: NET-437
URL: https://issues.apache.org/jira/browse/NET-437
Project: Commons Net
Issue Type: Bug
Components: Telnet
Affects Versions: 3.0.1
Environment: Java 6 + commons-net-3.0.1
Reporter: Gavin Camp
When the telnet client is used without allowing it to create it's own reader
thread (i.e. setReaderThread(false)) then the TelnetInputStream.available()
method will always return 0 bytes available. This makes non-blocking IO
impossible as you need to actualy call read to get the data without knowing if
it will block or not.
This fix to the available method in
org.apache.commons.net.telnet.TelnetInputStream, seems to fix the issue, and
should work for reader threads as well:
{noformat}
@Override
public int available() throws IOException
{
// Critical section because run() may change __bytesAvailable
synchronized (__queue)
{
if (__bytesAvailable == 0 && !__threaded) {
return super.available();
} else {
return __bytesAvailable;
}
}
}
{noformat}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira