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
This commit is contained in:
Tom Tromey 2007-04-02 22:10:41 +00:00 committed by Tom Tromey
parent c8bbabf282
commit c44cc446f7
10 changed files with 21 additions and 3 deletions

View File

@ -1,3 +1,14 @@
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>
* java/lang/reflect/natVMProxy.cc (run_proxy): Use

View File

@ -228,7 +228,9 @@ public final class PlainSocketImpl extends SocketImpl
*
* @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.
@ -336,7 +338,7 @@ public final class PlainSocketImpl extends SocketImpl
{
localSocketAddress
= new InetSocketAddress ((InetAddress) getOption(SocketOptions.SO_BINDADDR),
localport);
localport == -1 ? 0 : localport);
}
catch (SocketException _)
{

View File

@ -64,6 +64,10 @@ union SockAddr
void
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);
if (sock < 0)

View File

@ -1,5 +1,5 @@
/* 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.
@ -71,6 +71,7 @@ public final class SocketChannelImpl extends SocketChannel
{
super (provider);
impl = new PlainSocketImpl();
impl.create(true);
socket = new NIOSocket (impl, this);
configureBlocking(true);
}