commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gavin Camp (Created) (JIRA)" <j...@apache.org>
Subject [jira] [Created] (NET-437) TelnetInputStream doesn't support non-blocking IO when reader thread is not enabled
Date Mon, 09 Jan 2012 15:16:39 GMT
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

        

Mime
View raw message