Initial load
diff --git a/test/java/net/SocketInputStream/SocketClosedException.java b/test/java/net/SocketInputStream/SocketClosedException.java
new file mode 100644
index 0000000..9857628
--- /dev/null
+++ b/test/java/net/SocketInputStream/SocketClosedException.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2002-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 4681556
+ * @summary Wrong text if a read is performed on a socket after it
+ *      has been closed
+ */
+
+import java.io.*;
+import java.net.*;
+
+public class SocketClosedException {
+
+    /*
+     * Is the server ready to serve?
+     */
+    volatile static boolean serverReady = false;
+
+    /*
+     * Define the server side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    static void doServerSide() throws Exception {
+        ServerSocket serverSocket = new ServerSocket(serverPort);
+        serverPort = serverSocket.getLocalPort();
+
+        /*
+         * Signal Client, we're ready for a connect.
+         */
+        serverReady = true;
+
+        Socket socket = serverSocket.accept();
+
+        InputStream is = socket.getInputStream();
+        OutputStream os = socket.getOutputStream();
+
+        os.write(85);
+        os.flush();
+        socket.close();
+    }
+
+    /*
+     * Define the client side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    static void doClientSide() throws Exception {
+
+        /*
+         * Wait for server to get started.
+         */
+        while (!serverReady) {
+            Thread.sleep(5000);
+        }
+
+        Socket socket = new Socket("localhost", serverPort);
+        InputStream is = socket.getInputStream();
+        OutputStream os = socket.getOutputStream();
+
+        int read = is.read();
+        socket.close();
+        read = is.read();
+    }
+
+    static int serverPort = 0;
+    static Exception serverException = null;
+
+    public static void main(String[] args) throws Exception {
+        startServer();
+        try {
+            doClientSide();
+        } catch (SocketException e) {
+            if (!e.getMessage().equalsIgnoreCase("Socket closed")) {
+                throw new Exception("Received a wrong exception message: " +
+                                        e.getMessage());
+            }
+            System.out.println("PASSED: received the right exception message: "
+                                        + e.getMessage());
+        }
+        if (serverException != null) {
+            throw serverException;
+        }
+    }
+
+    static void startServer() {
+        Thread serverThread = new Thread() {
+            public void run() {
+                try {
+                    doServerSide();
+                } catch (Exception e) {
+                    /*
+                     * server thread just died.
+                     * Release the client, if not active already...
+                     */
+                    System.err.println("Server died...");
+                    serverReady = true;
+                    serverException = e;
+                }
+            }
+        };
+        serverThread.start();
+    }
+}
diff --git a/test/java/net/SocketInputStream/SocketTimeout.java b/test/java/net/SocketInputStream/SocketTimeout.java
new file mode 100644
index 0000000..7cd362b
--- /dev/null
+++ b/test/java/net/SocketInputStream/SocketTimeout.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 4158021
+ * @summary cannot distinguish Thread.interrupt and Socket.setSoTimeout exceptions
+ */
+
+import java.net.*;
+import java.io.*;
+
+public class SocketTimeout  {
+    public static void main(String args[]) throws Exception {
+    InetAddress  sin = null;
+    Socket       soc = null,soc1 = null;
+    InputStream  is = null;
+    OutputStream os = null;
+    ServerSocket srv = null;
+    int          port = 0;
+    int          tout = 1000;
+
+    sin = InetAddress.getLocalHost();
+    srv = new ServerSocket(port);
+    port = srv.getLocalPort();
+    soc = new Socket(sin, port);
+    soc1 = srv.accept();
+    soc.setSoTimeout(tout);
+    srv.setSoTimeout(tout);
+
+    try {
+      is = soc.getInputStream();
+      os = soc1.getOutputStream();
+      is.read();
+    } catch(InterruptedIOException e) {
+        try {
+            if (! (e instanceof java.net.SocketTimeoutException))
+                throw new Exception ("Wrong exception class thrown");
+        } catch(NoClassDefFoundError e1) {
+            throw new Exception ("SocketTimeoutException: not found");
+        }
+    }
+
+    // now check accept
+
+    try {
+      srv.accept ();
+    } catch(InterruptedIOException e) {
+        try {
+            if (! (e instanceof java.net.SocketTimeoutException))
+                throw new Exception ("Wrong exception class thrown");
+        } catch(NoClassDefFoundError e1) {
+            throw new Exception ("SocketTimeoutException: not found");
+        }
+    }
+
+    // Now check DatagramSocket.receive()
+
+    DatagramSocket dg = new DatagramSocket ();
+    dg.setSoTimeout (tout);
+
+    try {
+      dg.receive (new DatagramPacket (new byte [64], 64));
+    } catch(InterruptedIOException e) {
+        try {
+            if (! (e instanceof java.net.SocketTimeoutException))
+                throw new Exception ("Wrong exception class thrown");
+        } catch(NoClassDefFoundError e1) {
+            throw new Exception ("SocketTimeoutException: not found");
+        }
+    }
+
+    soc.close();
+    soc1.close();
+    srv.close();
+    dg.close();
+  }
+}