[ https://issues.apache.org/jira/browse/NET-437?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13183229#comment-13183229 ]
Sebb commented on NET-437: -------------------------- Or even just do the same for both: {code} return __bytesAvailable + super.available(); {code} AFAICT, that should always work, and would be more accurate. > 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 > Original Estimate: 1h > Remaining Estimate: 1h > > 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