jdk/test/sun/security/ssl/templates/SSLSocketSSLEngineTemplate.java
changeset 22047 7980346542b6
parent 21943 0fdb9441797f
equal deleted inserted replaced
22046:b7163958d6d9 22047:7980346542b6
   219         createSSLEngine();
   219         createSSLEngine();
   220         createBuffers(direct);
   220         createBuffers(direct);
   221 
   221 
   222         try {
   222         try {
   223             boolean closed = false;
   223             boolean closed = false;
       
   224             // will try to read one more time in case client message
       
   225             // is fragmented to multiple pieces
       
   226             boolean retry = true;
   224 
   227 
   225             InputStream is = socket.getInputStream();
   228             InputStream is = socket.getInputStream();
   226             OutputStream os = socket.getOutputStream();
   229             OutputStream os = socket.getOutputStream();
   227 
   230 
   228             SSLEngineResult serverResult;   // results from last operation
   231             SSLEngineResult serverResult;   // results from last operation
   293                     serverIn.flip();
   296                     serverIn.flip();
   294 
   297 
   295                     /*
   298                     /*
   296                      * A sanity check to ensure we got what was sent.
   299                      * A sanity check to ensure we got what was sent.
   297                      */
   300                      */
   298                     if (serverIn.remaining() != clientMsg.length) {
   301                     if (serverIn.remaining() !=  clientMsg.length) {
   299                         throw new Exception("Client:  Data length error");
   302                         if (retry && serverIn.remaining() < clientMsg.length) {
       
   303                             log("Need to read more from client");
       
   304                             retry = false;
       
   305                             continue;
       
   306                         } else {
       
   307                             throw new Exception("Client:  Data length error");
       
   308                         }
   300                     }
   309                     }
   301 
   310 
   302                     for (int i = 0; i < clientMsg.length; i++) {
   311                     for (int i = 0; i < clientMsg.length; i++) {
   303                         if (clientMsg[i] != serverIn.get()) {
   312                         if (clientMsg[i] != serverIn.get()) {
   304                             throw new Exception("Client:  Data content error");
   313                             throw new Exception("Client:  Data content error");