[Patch] Fix Socket read returns EOF when count == 0...
David Daney
ddaney@avtrex.com
Tue Mar 15 00:04:00 GMT 2005
For POSIX, a call to read(byte[] b, int off, int count) with count of
zero on a Socket's InputStream returns -1 signaling EOF.
This is because the count is propagated the the ::recv() system call
which returns the number of bytes read or zero to signal EOF. Since
zero bytes were requested we report EOF when we should report zero bytes
transfered.
Before recent fixes to BufferedInputStream, some HTTP URLConnections
were being broken because of this behavior. Since the
BufferedInputStream was fixed I have not experienced any problems, but
this is a latent bug waiting to bite someone else.
FWIW: FileInputStream has similar handling for the count == 0 case.
Tested on the HEAD on i686-pc-linux with make check in libjava with no
regressions. No regressions in mauve in the 4.0 branch (HEAD not tested
in mauve due to ICE in mauve)
2005-03-14 David Daney <ddaney@avtrex.com>
* gnu/java/net/natPlainSocketImplPosix.cc (read_helper): Handle
count == 0 case.
O.K to commit to HEAD?
How about the 4.0 branch for good measure?
David Daney.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: net.patch
URL: <http://gcc.gnu.org/pipermail/java-patches/attachments/20050315/296301ef/attachment.ksh>
More information about the Java-patches
mailing list