harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Ellison <t.p.elli...@gmail.com>
Subject Re: [classlib] Network changes causing linux hang in HttpURLConnectionTest
Date Thu, 11 Dec 2008 11:44:36 GMT
Mark Hindess wrote:
> In message <200812110854.mBB8shW9030452@d06av02.portsmouth.uk.ibm.com>,
> "Mark Hindess" writes:
>> When running 
>> org.apache.harmony.luni.tests...protocol.http.HttpURLConnectionTest
>> I am seeing a hang in testConnectionPersistence method on linux
>> (x86-64 and x86).
>> [snip]
> Ok.  It looks like there is a problem with the selectRead implementation on
> unix.  The use of this function in:
>   Java_org_apache_harmony_luni_platform_OSNetworkSystem_readDirect
> compares the result of the selectRead call using portlib constants.  This
> is valid for the windows implementation of selectRead - because it uses
> hysock_select.  However, the unix implementation uses poll which is returning:
>   On success, a positive number is returned; [snip].  A value of 0
>   indicates that the call timed out and no file descriptors were ready.
>   On error, -1 is returned, and errno is set appropriately.
> I think the fix is:
> 1) Check for other uses of selectRead and make sure they all use portlib 
> constants.
> 2) Fix selectRead on unix to map the poll return codes to portlib constants.
> I'll take a look at doing this.  Shout if you don't think this is a good
> approach.

Having selectRead return different values on different platforms is not
a good idea (even though it is not a portlib function), so yes it should
be fixed.

There is plenty of work left in tidying up and optimizing the networking
code.  Thanks for tracking this down.


View raw message