From d8e8cbb3117a5537c83f244aa049f6b7bdbf9504 Mon Sep 17 00:00:00 2001 From: "Rafael H. Schloming" Date: Wed, 1 Jul 2009 13:43:08 +0000 Subject: fixed hang in SSL client, ssl profile still fails due to port conflicts, but it should no longer hang git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@790161 13f79535-47bb-0310-9956-ffa450edef68 --- .../qpid/transport/network/ssl/SSLReceiver.java | 5 ++++ .../qpid/transport/network/ssl/SSLSender.java | 33 +++++++++++++--------- 2 files changed, 24 insertions(+), 14 deletions(-) (limited to 'qpid/java/common') diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLReceiver.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLReceiver.java index 011c38c2d7..e6e6c5f791 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLReceiver.java +++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLReceiver.java @@ -95,6 +95,11 @@ public class SSLReceiver implements Receiver try { SSLEngineResult result = engine.unwrap(netData, appData); + synchronized (notificationToken) + { + notificationToken.notifyAll(); + } + int read = result.bytesProduced(); status = result.getStatus(); handshakeStatus = result.getHandshakeStatus(); diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLSender.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLSender.java index e8d50d9020..0e785bb2ee 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLSender.java +++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLSender.java @@ -200,21 +200,26 @@ public class SSLSender implements Sender flush(); synchronized(engineState) { - long start = System.currentTimeMillis(); - try + switch (engine.getHandshakeStatus()) { - engineState.wait(timeout); - } - catch(InterruptedException e) - { - // pass - } - - if (System.currentTimeMillis()- start >= timeout) - { - throw new SenderException( - "SSL Engine timed out waiting for a response." + - "To get more info,run with -Djavax.net.debug=ssl"); + case NEED_UNWRAP: + long start = System.currentTimeMillis(); + try + { + engineState.wait(timeout); + } + catch(InterruptedException e) + { + // pass + } + + if (System.currentTimeMillis()- start >= timeout) + { + throw new SenderException( + "SSL Engine timed out waiting for a response." + + "To get more info,run with -Djavax.net.debug=ssl"); + } + break; } } break; -- cgit v1.2.1