natPlainSocketImplPosix.cc (create): Return if already created.
authorTom Tromey <tromey@redhat.com>
Mon, 2 Apr 2007 22:10:41 +0000 (22:10 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Mon, 2 Apr 2007 22:10:41 +0000 (22:10 +0000)
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

libjava/ChangeLog
libjava/classpath/lib/gnu/classpath/jdwp/event/ThreadStartEvent.class
libjava/classpath/lib/gnu/classpath/jdwp/transport/SocketTransport.class
libjava/classpath/lib/gnu/java/net/PlainSocketImpl$SocketInputStream.class
libjava/classpath/lib/gnu/java/net/PlainSocketImpl$SocketOutputStream.class
libjava/classpath/lib/gnu/java/net/PlainSocketImpl.class
libjava/classpath/lib/gnu/java/nio/SocketChannelImpl.class
libjava/gnu/java/net/PlainSocketImpl.java
libjava/gnu/java/net/natPlainSocketImplPosix.cc
libjava/gnu/java/nio/SocketChannelImpl.java

index dce810fa3ab29c8aada211a39af1a9e53aaf610e..ca939837674ff3d444a612f9d3f676907089b50e 100644 (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
index 05fd3dcb5700bedb875eeb99573e5e27341ef62c..84f88dd75acac21dc095002817d0c267e177c3f5 100644 (file)
Binary files a/libjava/classpath/lib/gnu/classpath/jdwp/event/ThreadStartEvent.class and b/libjava/classpath/lib/gnu/classpath/jdwp/event/ThreadStartEvent.class differ
index 8d7f0932b0241ae1493c7323e92e482b8df66060..eb7fc332aa6f83243b332918996ef92d734335c0 100644 (file)
Binary files a/libjava/classpath/lib/gnu/classpath/jdwp/transport/SocketTransport.class and b/libjava/classpath/lib/gnu/classpath/jdwp/transport/SocketTransport.class differ
index 5c42da8e08aa8f72436f393a06eec5dd5d010f91..28c8a6d5716ed5d8ccec520bc2d2e7348db25510 100644 (file)
Binary files a/libjava/classpath/lib/gnu/java/net/PlainSocketImpl$SocketInputStream.class and b/libjava/classpath/lib/gnu/java/net/PlainSocketImpl$SocketInputStream.class differ
index 739340fd585bbcfc8c94ce5934ec10a0432b14ed..58cd4b956dbcc831345dd650259dad05afb60872 100644 (file)
Binary files a/libjava/classpath/lib/gnu/java/net/PlainSocketImpl$SocketOutputStream.class and b/libjava/classpath/lib/gnu/java/net/PlainSocketImpl$SocketOutputStream.class differ
index 1e26dd573b3c588f51fd99a2781a3d949016053f..1eaf6587bcf4c795ae24eb3f155e419373b890e6 100644 (file)
Binary files a/libjava/classpath/lib/gnu/java/net/PlainSocketImpl.class and b/libjava/classpath/lib/gnu/java/net/PlainSocketImpl.class differ
index 26c94fce0929ae7cee4d4e7baabeb2b464141958..88548eb01afddc6ce182cdd46c3e33126a429c60 100644 (file)
Binary files a/libjava/classpath/lib/gnu/java/nio/SocketChannelImpl.class and b/libjava/classpath/lib/gnu/java/nio/SocketChannelImpl.class differ
index dad1724d6b10efd402731e99976c83fe385d7c2d..d2c8f02b67d08c8f2513ca0ecd4fd01708e3b02b 100644 (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 _)
          {
index d16f1d31f7b06adbb2c2560713760d6d7c5c2551..b4f4a851e81e94252515e5eb281bc026adee9709 100644 (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)
index cda86e80723310d7a574ebf7e04433d595deafb3..5925712bef26d5980a7e57ecb1875ed7ca6e7f71 100644 (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);
   }