2003-12-02 Michael Koch <konqueror@gmx.de>
authorMichael Koch <konqueror@gmx.de>
Tue, 2 Dec 2003 15:23:23 +0000 (15:23 +0000)
committerMichael Koch <mkoch@gcc.gnu.org>
Tue, 2 Dec 2003 15:23:23 +0000 (15:23 +0000)
* java/net/DatagramSocket.java
(close): Close associated DatagramChannel object.
* java/net/ServerSocket.java
* java/net/Socket.java
(close): Reset impl and bound before calling getChannel().close() to
prevent from loops.

From-SVN: r74183

libjava/ChangeLog
libjava/java/net/DatagramSocket.java
libjava/java/net/ServerSocket.java
libjava/java/net/Socket.java

index 409bf3b874553cd405c5a708bb9ad53868c3b344..82873fe60bd1504bebd33c797cc2ec19a2cc8342 100644 (file)
@@ -1,3 +1,12 @@
+2003-12-02  Michael Koch  <konqueror@gmx.de>
+
+       * java/net/DatagramSocket.java
+       (close): Close associated DatagramChannel object.
+       * java/net/ServerSocket.java
+       * java/net/Socket.java
+       (close): Reset impl and bound before calling getChannel().close() to
+       prevent from loops.
+
 2003-12-02  Michael Koch  <konqueror@gmx.de>
 
        * java/nio/channels/spi/AbstractInterruptibleChannel.java
index f4bc4ea79d5eaced1261d01cc91c50bb0ffcf200..e3edfcd6c39ec62daa5889332e558e82c4d74e73 100644 (file)
@@ -232,6 +232,16 @@ public class DatagramSocket
            remotePort = -1;
            impl = null;
          }
+
+       try
+         {
+           if (getChannel() != null)
+             getChannel().close();
+         }
+       catch (IOException e)
+         {
+           // Do nothing.
+         }
       }
   }
 
index 7af1a3301c0dec023ff3a4bc264efb325b32a2f9..4e7f58a7cfcf17ea09486097d0e3f5ed8d2c04aa 100644 (file)
@@ -356,12 +356,11 @@ public class ServerSocket
     if (!isClosed())
       {
        impl.close();
+       impl = null;
+       bound = false;
 
        if (getChannel() != null)
          getChannel().close();
-    
-       impl = null;
-       bound = false;
       }
   }
 
@@ -543,7 +542,7 @@ public class ServerSocket
     if (!isBound())
       return "ServerSocket[unbound]";
     
-    return ("ServerSocket[addr=" + impl.getInetAddress()
+    return ("ServerSocket[addr=" + getInetAddress()
            + ",port=" + impl.getPort()
            + ",localport=" + impl.getLocalPort()
            + "]");
index 27fa69131b5e9d163bc7f5f13612c1d0fc2b8c4a..a0f831c17015374540e1fa624a9cf9a5b94e0364 100644 (file)
@@ -1006,12 +1006,11 @@ public class Socket
       throw new SocketException("socket is closed");
     
     getImpl().close();
+    impl = null;
+    bound = false;
 
     if (getChannel() != null)
       getChannel().close();
-    
-    impl = null;
-    bound = false;
   }
 
   /**