You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Andrew Zhang (JIRA)" <ji...@apache.org> on 2006/06/29 11:21:30 UTC
[jira] Updated: (HARMONY-707) [classlib][nio]
java.nio.channels.ServerSocketChannel.accept() method changes the value of
SO_TIMEOUT if there are no pending connections in nonblocking mode.
[ http://issues.apache.org/jira/browse/HARMONY-707?page=all ]
Andrew Zhang updated HARMONY-707:
---------------------------------
Attachment: nio.diff
Hello,
Would you please try my patch?
This patch fixes following problems:
1. Current ly, Harmony takes "block accpet + timeout" to simulate non blocking accept. So the SO_TIMEOUT value is changed during accept operation. The patch fixes the problem, and use select to implement non blocking operation.
2. Remove duplicated security check.
Thanks!
Best regards,
Andrew
> [classlib][nio] java.nio.channels.ServerSocketChannel.accept() method changes the value of SO_TIMEOUT if there are no pending connections in nonblocking mode.
> --------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HARMONY-707
> URL: http://issues.apache.org/jira/browse/HARMONY-707
> Project: Harmony
> Type: Bug
> Components: Classlib
> Reporter: Andrew Zhang
> Priority: Minor
> Attachments: nio.diff
>
> java.nio.channels.ServerSocketChannel.accept() method changes the value of SO_TIMEOUT if there are no pending connections in nonblocking mode.
> I'll upload a patch soon. Thanks!
> Test case:
> public void test_accept() throws IOException {
> final int SO_TIMEOUT = 800;
> ServerSocketChannel sc = ServerSocketChannel.open();
> try {
> ServerSocket ss = sc.socket();
> ss.bind(new InetSocketAddress("127.0.0.1", 0));
> sc.configureBlocking(false);
> ss.setSoTimeout(SO_TIMEOUT);
> SocketChannel client = sc.accept();
> // non blocking mode, returns null since there are no pending connections.
> assertNull(client);
> int soTimeout = ss.getSoTimeout();
> // Harmony fails here.
> assertEquals(SO_TIMEOUT, soTimeout);
> } finally {
> sc.close();
> }
> }
> Test result:
> RI 5.0 passes the test while Harmony fails.
> Best regards,
> Andrew
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira