You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Tim Ellison (JIRA)" <ji...@apache.org> on 2007/10/18 14:23:50 UTC

[jira] Assigned: (HARMONY-4961) SocketChannel.socket().getLocalPort() returns -1 from ServerSocketChannel

     [ https://issues.apache.org/jira/browse/HARMONY-4961?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tim Ellison reassigned HARMONY-4961:
------------------------------------

    Assignee: Tim Ellison

> SocketChannel.socket().getLocalPort() returns -1 from ServerSocketChannel
> -------------------------------------------------------------------------
>
>                 Key: HARMONY-4961
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4961
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>         Environment: Reproduced on Windows XP SP2, on apache-harmony-jdk-r580985-windows-x86-32-snapshot
>            Reporter: Phil Loats
>            Assignee: Tim Ellison
>
> The following testcase fails onthe Harmony M3 snapshot build.  
>   On J2SE 5.0, the output is "myport is 4321"
>   On Harmony M3 is "myport is -1"
> It seems that SocketChannelImpl.isBound flag remains false when accessed from
> SocketChannelImpl$SocketAdapter.isBound() from
> SocketChannelImpl$SocketAdapter(Socket).getLocalPort()
> We need this fix in an IBM product, I'd be most helpful if any fix can be clearly identified in SVN (i.e. don't lump other fixes with this fix).
> =========simplified testcase===============
> import java.io.BufferedReader;
> import java.io.IOException;
> import java.io.InputStreamReader;
> import java.net.InetAddress;
> import java.net.InetSocketAddress;
> import java.net.Socket;
> import java.nio.channels.ServerSocketChannel;
> import java.nio.channels.SocketChannel;
> public class Test implements Runnable {
> 	public static void main(String[] args) {
> 		new Test().test();
> 	}
> 	
> 	void test() {	
> 		new Thread(this).start();
> 	    
> 	    try {
> 	        // Create a non-blocking server socket channel on port
> 	        ServerSocketChannel ssChannel = ServerSocketChannel.open();
> 	        ssChannel.configureBlocking(true);
> 	        int port = 4321;
> 	        ssChannel.socket().bind(new InetSocketAddress(port));
> 	        // Accept the connection request
> 	        SocketChannel sChannel = ssChannel.accept();
> 	    
> 	        if (sChannel != null) {
> 	            int myport = sChannel.socket().getLocalPort();
> 	            System.out.println("myport is "+myport);
> 	            sChannel.close();
> 	        }
> 	    } catch (IOException e) {
> 	    	e.printStackTrace();
> 	    }
> 	}
> 	public void run() {
> 		try {
> 			Thread.sleep(1000);
> 			Socket socket = new Socket(InetAddress.getByName("localhost"), 4321);
> 		    BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
> 		    String str;
> 	        while ((str = rd.readLine()) != null) {
> 	            System.out.println(str);
> 	        }
> 	        rd.close();
> 		} catch (Exception e) {
> 			e.printStackTrace();
> 		}
> 	}
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.