diff --git a/libjava/ChangeLog b/libjava/ChangeLog index f4aca75d329..6d91983d0ad 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,13 @@ +2003-03-02 Michael Koch + + * java/net/DatagramSocket.java + (closed): New member variable. + (close): Use closed variable. + (getInetAddress): No need to call isConnected(). + (getPort): No need to call isConnected(). + (disconnect): Reset remoteAddress and remotePort, fixed typo. + (isClosed): Reimplemented. + 2003-03-02 Michael Koch * configure.in: Added check for memory mapping of files. diff --git a/libjava/java/net/DatagramSocket.java b/libjava/java/net/DatagramSocket.java index 334083a6f35..091ebf98d1a 100644 --- a/libjava/java/net/DatagramSocket.java +++ b/libjava/java/net/DatagramSocket.java @@ -88,6 +88,11 @@ public class DatagramSocket */ private int remotePort = -1; + /** + * Indicates when the socket is closed. + */ + private boolean closed = false; + /** * Creates a DatagramSocket from a specified DatagramSocketImpl instance * @@ -201,9 +206,13 @@ public class DatagramSocket */ public void close() { - impl.close(); - remoteAddress = null; - remotePort = -1; + if (!closed) + { + impl.close(); + remoteAddress = null; + remotePort = -1; + closed = true; + } } /** @@ -217,9 +226,6 @@ public class DatagramSocket */ public InetAddress getInetAddress() { - if (!isConnected ()) - return null; - return remoteAddress; } @@ -234,9 +240,6 @@ public class DatagramSocket */ public int getPort() { - if (!isConnected ()) - return -1; - return remotePort; } @@ -265,7 +268,7 @@ public class DatagramSocket // s.checkConnect("localhost", -1); try { - return (InetAddress)impl.getOption(SocketOptions.SO_BINDADDR); + return (InetAddress)impl.getOption(SocketOptions.SO_BINDADDR); } catch (SocketException ex) { @@ -273,12 +276,11 @@ public class DatagramSocket try { - return InetAddress.getLocalHost(); + return InetAddress.getLocalHost(); } catch (UnknownHostException ex) { - // FIXME: This should never happen, so how can we avoid this construct? - return null; + return null; } } @@ -469,7 +471,7 @@ public class DatagramSocket /** * This method disconnects this socket from the address/port it was - * conencted to. If the socket was not connected in the first place, + * connected to. If the socket was not connected in the first place, * this method does nothing. * * @since 1.2 @@ -477,6 +479,8 @@ public class DatagramSocket public void disconnect() { impl.disconnect(); + remoteAddress = null; + remotePort = -1; } /** @@ -596,7 +600,7 @@ public class DatagramSocket */ public boolean isClosed() { - return !impl.getFileDescriptor().valid(); + return closed; } /**