From 96a2bbca23321e7168eb615216115c73e28d5bec Mon Sep 17 00:00:00 2001 From: tromey Date: Mon, 2 Apr 2007 22:10:41 +0000 Subject: 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123440 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/gnu/java/net/PlainSocketImpl.java | 6 ++++-- libjava/gnu/java/net/natPlainSocketImplPosix.cc | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'libjava/gnu/java/net') diff --git a/libjava/gnu/java/net/PlainSocketImpl.java b/libjava/gnu/java/net/PlainSocketImpl.java index dad1724d6b1..d2c8f02b67d 100644 --- a/libjava/gnu/java/net/PlainSocketImpl.java +++ b/libjava/gnu/java/net/PlainSocketImpl.java @@ -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 _) { diff --git a/libjava/gnu/java/net/natPlainSocketImplPosix.cc b/libjava/gnu/java/net/natPlainSocketImplPosix.cc index d16f1d31f7b..b4f4a851e81 100644 --- a/libjava/gnu/java/net/natPlainSocketImplPosix.cc +++ b/libjava/gnu/java/net/natPlainSocketImplPosix.cc @@ -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) -- cgit v1.2.3