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();
+    }
+}