PatchSet 6618 
Date: 2005/06/10 22:37:02
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Resynced with GNU Classpath: server socket fixes

Members: 
        ChangeLog:1.4144->1.4145 
        libraries/javalib/java/net/ServerSocket.java:1.30->1.31 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4144 kaffe/ChangeLog:1.4145
--- kaffe/ChangeLog:1.4144      Fri Jun 10 22:29:54 2005
+++ kaffe/ChangeLog     Fri Jun 10 22:37:02 2005
@@ -4,6 +4,20 @@
 
        2005-05-31  Jeroen Frijters  <[EMAIL PROTECTED]>
 
+       * java/net/ServerSocket.java
+       (bound): Removed.
+       (local): New field.
+       (bind): Cache local socket address.
+       (getInetAddress, getLocalPort, getLocalSocketAddress, isBound):
+       Use cached local socket address.
+       (close): bound field was removed.
+
+2005-06-10  Dalibor Topic  <[EMAIL PROTECTED]>
+
+       Resynced with GNU Classpath.
+
+       2005-05-31  Jeroen Frijters  <[EMAIL PROTECTED]>
+
        * gnu/java/nio/channels/FileChannelImpl.java
        (FileChannelImpl()): Removed.
        (FileChannelImpl(File,int)): Made private.
Index: kaffe/libraries/javalib/java/net/ServerSocket.java
diff -u kaffe/libraries/javalib/java/net/ServerSocket.java:1.30 
kaffe/libraries/javalib/java/net/ServerSocket.java:1.31
--- kaffe/libraries/javalib/java/net/ServerSocket.java:1.30     Sun Apr 24 
10:08:10 2005
+++ kaffe/libraries/javalib/java/net/ServerSocket.java  Fri Jun 10 22:37:04 2005
@@ -76,9 +76,9 @@
   private SocketImpl impl;
 
   /**
-   * True if socket is bound.
+   * We need to retain the local address even after the socket is closed.
    */
-  private boolean bound;
+  private InetSocketAddress local;
 
   /*
    * This constructor is only used by java.nio.
@@ -238,7 +238,9 @@
       {
        impl.bind(addr, tmp.getPort());
        impl.listen(backlog);
-       bound = true;
+       local = new InetSocketAddress(
+            (InetAddress) impl.getOption(SocketOptions.SO_BINDADDR),
+            impl.getLocalPort());
       }
     catch (IOException exception)
       {
@@ -264,18 +266,10 @@
    */
   public InetAddress getInetAddress()
   {
-    if (! isBound())
+    if (local == null)
       return null;
 
-    try
-      {
-       return (InetAddress) impl.getOption(SocketOptions.SO_BINDADDR);
-      }
-    catch (SocketException e)
-      {
-       // This never happens as we are bound.
-       return null;
-      }
+    return local.getAddress();
   }
 
   /**
@@ -285,10 +279,10 @@
    */
   public int getLocalPort()
   {
-    if (! isBound())
+    if (local == null)
       return -1;
 
-    return impl.getLocalPort();
+    return local.getPort();
   }
 
   /**
@@ -300,10 +294,7 @@
    */
   public SocketAddress getLocalSocketAddress()
   {
-    if (! isBound())
-      return null;
-
-    return new InetSocketAddress(getInetAddress(), getLocalPort());
+    return local;
   }
 
   /**
@@ -393,7 +384,6 @@
 
     impl.close();
     impl = null;
-    bound = false;
 
     if (getChannel() != null)
       getChannel().close();
@@ -424,7 +414,7 @@
    */
   public boolean isBound()
   {
-    return bound;
+    return local != null;
   }
 
   /**

_______________________________________________
kaffe mailing list
[email protected]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to