From c531dd016b224f94eef10fdb562443aef5f64e61 Mon Sep 17 00:00:00 2001 From: Michael Koch Date: Tue, 2 Dec 2003 15:23:23 +0000 Subject: 2003-12-02 Michael Koch * 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/java/net/DatagramSocket.java | 10 ++++++++++ libjava/java/net/ServerSocket.java | 7 +++---- libjava/java/net/Socket.java | 5 ++--- 3 files changed, 15 insertions(+), 7 deletions(-) (limited to 'libjava/java/net') 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; } /** -- cgit v1.1