From 7c18844372736a3eac71f42cc64591adf7e3ea0d Mon Sep 17 00:00:00 2001 From: Zaiyao Liu Date: Sun, 15 Dec 2013 20:24:45 -0800 Subject: [PATCH] 8028562: Test SSLSocketSSLEngineTemplate.java intermittent failed with "Data length error" Test stabilization, read one more time in case of message fragment Reviewed-by: mullan, xuelei --- .../ssl/templates/SSLSocketSSLEngineTemplate.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/jdk/test/sun/security/ssl/templates/SSLSocketSSLEngineTemplate.java b/jdk/test/sun/security/ssl/templates/SSLSocketSSLEngineTemplate.java index 16696dbe414..d61a1e5345e 100644 --- a/jdk/test/sun/security/ssl/templates/SSLSocketSSLEngineTemplate.java +++ b/jdk/test/sun/security/ssl/templates/SSLSocketSSLEngineTemplate.java @@ -221,6 +221,9 @@ public class SSLSocketSSLEngineTemplate { try { boolean closed = false; + // will try to read one more time in case client message + // is fragmented to multiple pieces + boolean retry = true; InputStream is = socket.getInputStream(); OutputStream os = socket.getOutputStream(); @@ -295,8 +298,14 @@ public class SSLSocketSSLEngineTemplate { /* * A sanity check to ensure we got what was sent. */ - if (serverIn.remaining() != clientMsg.length) { - throw new Exception("Client: Data length error"); + if (serverIn.remaining() != clientMsg.length) { + if (retry && serverIn.remaining() < clientMsg.length) { + log("Need to read more from client"); + retry = false; + continue; + } else { + throw new Exception("Client: Data length error"); + } } for (int i = 0; i < clientMsg.length; i++) {