equal
deleted
inserted
replaced
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"); |