Socket InputStream.available may return a positive value after shutdown

Chris Hegarty chris.hegarty at oracle.com
Fri Aug 12 03:03:35 PDT 2011


On 11/08/2011 19:31, Michael McMahon wrote:
> On 11/08/11 17:27, Alan Bateman wrote:
>> Chris Hegarty wrote:
>>> Here is a first stab at fixing this issue.
>>>
>>>   http://cr.openjdk.java.net/~chegar/7014860/webrev.00/webrev/
>>>
>>> -Chris.
>> The spec clarification seems reasonable to me. Small typo "the 
>> streams available method" to "the stream's available method".
>>
>> Good to see the NIO socket adapter included in the test. One comment 
>> on the test is that the Thread.dumpStack is a bit odd. It might be 
>> better to pass in a test name into the test method and have that 
>> printed by the failure message.
>>
>> -Alan.
>>
> Just wondering what the motivation for changing this is? I can see the 
> logic in the change
> all right, but has anyone actually encountered this problem (of an 
> inconsistency
> between InputStream.available() and the number of bytes that can be 
> returned)?

This fix gives us consistent behavior across all platforms, and 
clarifies the spec so that users know what to expect. Currently the 
behavior on Linux and Windows is to return the amount of unattainable 
data in the socket buffer. Solaris returns 0.

We have two bugs in the bug database (that I can find) for this:
   6726928: SocketInputStream.available() method does not return 0 when 
it reaches end of file on Linux
   7014860: Socket.getInputStream().available() not clear for case that 
connection is shutdown for reading

CR 7014860 is the bug being used to fix this issue.

-Chris.


>
> - Michael



More information about the net-dev mailing list