commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebb (JIRA)" <>
Subject [jira] [Commented] (NET-466) Regression: TelnetInputStream#available() blocks
Date Sat, 18 Aug 2012 10:31:38 GMT


Sebb commented on NET-466:

Applied a fix which should work:

NET-466 Regression: TelnetInputStream#available() blocks


It might be that synchronizing the methods as per Gary's comment would also fix the issue.

Does anyone have a suitable test case that shows the issue?
> Regression: TelnetInputStream#available() blocks
> ------------------------------------------------
>                 Key: NET-466
>                 URL:
>             Project: Commons Net
>          Issue Type: Bug
>          Components: Telnet
>    Affects Versions: 3.1
>            Reporter: Martin Oberhuber
>            Priority: Critical
>             Fix For: 3.2
> When testing with Commons Net 3.1 for Eclipse
, I found that our telnet client blocks when the ReaderThread is running and waiting for new
data. Investigation shows that our code blocks on TelnetInputStream#available().
> This regression is due to the code introduced for NET-437 "TelnetInputStream doesn't
support non-blocking IO when reader thread is not enabled":
> TelnetInputStream#available() now calls super.available() which is declared as "synchronized"
on BufferedInputStream in JDK 1.6.0_21 at least. But at the same time, the telnet ReaderThread
has already the Monitor on BufferedInputStream and doesn't give it up while sitting in read0().
> This seems to be exactly the situation that the comment before TelnetInputStream#close()
warns about:
>     // Cannot be synchronized.  Will cause deadlock if run() is blocked
>     // in read because BufferedInputStream read() is synchronized.
> This is a severe issue since it violates the specification and use of available().

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message