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