You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2007/01/10 11:49:06 UTC

svn commit: r494780 - in /harmony/enhanced/classlib/trunk/modules/luni/src: main/java/java/net/Socket.java test/java/tests/api/java/net/SocketTest.java

Author: tellison
Date: Wed Jan 10 02:49:05 2007
New Revision: 494780

URL: http://svn.apache.org/viewvc?view=rev&rev=494780
Log:
Apply patch HARMONY-2944 ([classlib][luni]No Exception was thrown when shutdown the input/output of a Socket twice)

Modified:
    harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/Socket.java
    harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/net/SocketTest.java

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/Socket.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/Socket.java?view=diff&rev=494780&r1=494779&r2=494780
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/Socket.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/net/Socket.java Wed Jan 10 02:49:05 2007
@@ -696,6 +696,9 @@
      *             if the socket is closed
      */
     public void shutdownInput() throws IOException {
+        if (isInputShutdown()) {
+            throw new SocketException(Msg.getString("K0321")); //$NON-NLS-1$
+        }
         checkClosedAndCreate(false);
         impl.shutdownInput();
         isInputShutdown = true;
@@ -710,6 +713,9 @@
      *             if the socket is closed
      */
     public void shutdownOutput() throws IOException {
+        if (isOutputShutdown()) {
+            throw new SocketException(Msg.getString("KA00f")); //$NON-NLS-1$
+        }
         checkClosedAndCreate(false);
         impl.shutdownOutput();
         isOutputShutdown = true;

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/net/SocketTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/net/SocketTest.java?view=diff&rev=494780&r1=494779&r2=494780
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/net/SocketTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/net/SocketTest.java Wed Jan 10 02:49:05 2007
@@ -2451,7 +2451,32 @@
             // expected
         }
     }
-    
+
+    /**
+     * @tests Socket#shutdownInput()
+     * @tests Socket#shutdownOutput()
+     */
+    public void test_shutdownInputOutput_twice() throws Exception {
+        // regression test for Harmony-2944
+        Socket s = new Socket("0.0.0.0", 0, false);
+        s.shutdownInput();
+
+        try {
+            s.shutdownInput();
+            fail("should throw SocketException");
+        } catch (SocketException se) {
+            // expected
+        }
+        s.shutdownOutput();
+
+        try {
+            s.shutdownOutput();
+            fail("should throw SocketException");
+        } catch (SocketException se) {
+            // expected
+        }
+    }
+
 	/**
 	 * Sets up the fixture, for example, open a network connection. This method
 	 * is called before a test is executed.