< prev index next >

src/java.base/share/classes/sun/security/ssl/HandshakeOutStream.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2018, Oracle and/or its affiliates. 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.  Oracle designates this

@@ -54,15 +54,16 @@
         if (size() < 4) {       // 4: handshake message header size
             // internal_error alert will be triggered
             throw new RuntimeException("handshake message is not available");
         }
 
-        // outputRecord cannot be null
+        if (outputRecord != null) {
         outputRecord.encodeHandshake(buf, 0, count);
 
         // reset the byte array output stream
         reset();
+        }   // otherwise, the handshake outstream is temporarily used only.
     }
 
     //
     // overridden ByteArrayOutputStream methods
     //

@@ -74,12 +75,14 @@
         super.write(b, off, len);
     }
 
     @Override
     public void flush() throws IOException {
+        if (outputRecord != null) {
         outputRecord.flush();
     }
+    }
 
     //
     // handshake output stream management functions
     //
 

@@ -104,10 +107,17 @@
         super.write(i >> 16);
         super.write(i >> 8);
         super.write(i);
     }
 
+    void putInt32(int i) throws IOException {
+        super.write(i >> 24);
+        super.write(i >> 16);
+        super.write(i >> 8);
+        super.write(i);
+    }
+
     /*
      * Put byte arrays with length encoded as 8, 16, 24 bit
      * integers in big-endian format.
      */
     void putBytes8(byte[] b) throws IOException {
< prev index next >