Commit c44cc446 by Tom Tromey Committed by Tom Tromey

natPlainSocketImplPosix.cc (create): Return if already created.

	https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=233406
	* gnu/java/net/natPlainSocketImplPosix.cc (create): Return if
	already created.
	* gnu/java/net/PlainSocketImpl.java (getLocalAddress): Handle case
	where localport is -1.
	(create): Now public.
	* gnu/java/nio/SocketChannelImpl.java (SocketChannelImpl): Call
	'create' on the socket.

From-SVN: r123440
parent c8bbabf2
2007-04-02 Tom Tromey <tromey@redhat.com>
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=233406
* gnu/java/net/natPlainSocketImplPosix.cc (create): Return if
already created.
* gnu/java/net/PlainSocketImpl.java (getLocalAddress): Handle case
where localport is -1.
(create): Now public.
* gnu/java/nio/SocketChannelImpl.java (SocketChannelImpl): Call
'create' on the socket.
2007-04-02 Andrew Haley <aph@redhat.com> 2007-04-02 Andrew Haley <aph@redhat.com>
* java/lang/reflect/natVMProxy.cc (run_proxy): Use * java/lang/reflect/natVMProxy.cc (run_proxy): Use
......
...@@ -228,7 +228,9 @@ public final class PlainSocketImpl extends SocketImpl ...@@ -228,7 +228,9 @@ public final class PlainSocketImpl extends SocketImpl
* *
* @param stream true for a stream socket, false for a datagram socket * @param stream true for a stream socket, false for a datagram socket
*/ */
protected native void create(boolean stream) throws IOException; // FIXME: this is public for nio ... but this is just a hack
// until we upgrade to Classpath's nio.
public native void create(boolean stream) throws IOException;
/** /**
* Connects to the remote hostname and port specified as arguments. * Connects to the remote hostname and port specified as arguments.
...@@ -336,7 +338,7 @@ public final class PlainSocketImpl extends SocketImpl ...@@ -336,7 +338,7 @@ public final class PlainSocketImpl extends SocketImpl
{ {
localSocketAddress localSocketAddress
= new InetSocketAddress ((InetAddress) getOption(SocketOptions.SO_BINDADDR), = new InetSocketAddress ((InetAddress) getOption(SocketOptions.SO_BINDADDR),
localport); localport == -1 ? 0 : localport);
} }
catch (SocketException _) catch (SocketException _)
{ {
......
...@@ -64,6 +64,10 @@ union SockAddr ...@@ -64,6 +64,10 @@ union SockAddr
void void
gnu::java::net::PlainSocketImpl::create (jboolean stream) gnu::java::net::PlainSocketImpl::create (jboolean stream)
{ {
// We might already have been create()d in the nio case.
if (native_fd != -1)
return;
int sock = _Jv_socket (AF_INET, stream ? SOCK_STREAM : SOCK_DGRAM, 0); int sock = _Jv_socket (AF_INET, stream ? SOCK_STREAM : SOCK_DGRAM, 0);
if (sock < 0) if (sock < 0)
......
/* SocketChannelImpl.java -- /* SocketChannelImpl.java --
Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc. Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath. This file is part of GNU Classpath.
...@@ -71,6 +71,7 @@ public final class SocketChannelImpl extends SocketChannel ...@@ -71,6 +71,7 @@ public final class SocketChannelImpl extends SocketChannel
{ {
super (provider); super (provider);
impl = new PlainSocketImpl(); impl = new PlainSocketImpl();
impl.create(true);
socket = new NIOSocket (impl, this); socket = new NIOSocket (impl, this);
configureBlocking(true); configureBlocking(true);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment