Hi,

Maybe a more conservative implementation could have been:

   int available = impl.available();
   return eof ? 0 : available;

I almost suggested that yesterday, but I saw that
read() already had a logic similar to what Vyom was
proposing for available:

 146         // EOF already encountered
 147         if (eof) {
 148             return -1;
 149         }

which AFAICT  means that read returns -1 instead of throwing
if the socket is closed and EOF was previously reached.

best regards,

-- daniel

On 12/10/2018 09:55, Chris Hegarty wrote:

On 12/10/18 08:29, Alan Bateman wrote:
On 11/10/2018 09:03, vyom tewari wrote:
Hi Chris,

Thanks for review, please find the updated webrev(http://cr.openjdk.java.net/~vtewari/8189366/webrev0.1/index.html) where i included the test.
Can you explain the behavior change for the closed socket case? Will this change mean that available returns 0 when it previously throw IOException?

You are correct. This is not intentional, or desirable.

We should revert the change or add an additional check
for isClosedOrPending. Since this is already pushed, I
filed a new JIRA issue to track this.

   https://bugs.openjdk.java.net/browse/JDK-8212114

-Chris.


Reply via email to