diff options
author | Michael Koch <konqueror@gmx.de> | 2003-12-02 15:23:23 +0000 |
---|---|---|
committer | Michael Koch <mkoch@gcc.gnu.org> | 2003-12-02 15:23:23 +0000 |
commit | c531dd016b224f94eef10fdb562443aef5f64e61 (patch) | |
tree | f699b4a047d88781fc13f0b65df2ec13628f274e /libjava/java/net | |
parent | d9b526cc1d071648d66917b021aac9c459f9082c (diff) | |
download | gcc-c531dd016b224f94eef10fdb562443aef5f64e61.zip gcc-c531dd016b224f94eef10fdb562443aef5f64e61.tar.gz gcc-c531dd016b224f94eef10fdb562443aef5f64e61.tar.bz2 |
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.
From-SVN: r74183
Diffstat (limited to 'libjava/java/net')
-rw-r--r-- | libjava/java/net/DatagramSocket.java | 10 | ||||
-rw-r--r-- | libjava/java/net/ServerSocket.java | 7 | ||||
-rw-r--r-- | libjava/java/net/Socket.java | 5 |
3 files changed, 15 insertions, 7 deletions
diff --git a/libjava/java/net/DatagramSocket.java b/libjava/java/net/DatagramSocket.java index f4bc4ea..e3edfcd 100644 --- a/libjava/java/net/DatagramSocket.java +++ b/libjava/java/net/DatagramSocket.java @@ -232,6 +232,16 @@ public class DatagramSocket remotePort = -1; impl = null; } + + try + { + if (getChannel() != null) + getChannel().close(); + } + catch (IOException e) + { + // Do nothing. + } } } diff --git a/libjava/java/net/ServerSocket.java b/libjava/java/net/ServerSocket.java index 7af1a33..4e7f58a 100644 --- a/libjava/java/net/ServerSocket.java +++ b/libjava/java/net/ServerSocket.java @@ -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() + "]"); diff --git a/libjava/java/net/Socket.java b/libjava/java/net/Socket.java index 27fa691..a0f831c 100644 --- a/libjava/java/net/Socket.java +++ b/libjava/java/net/Socket.java @@ -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; } /** |