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

        

Reply via email to