diff options
author | Rafael H. Schloming <rhs@apache.org> | 2009-07-01 13:43:08 +0000 |
---|---|---|
committer | Rafael H. Schloming <rhs@apache.org> | 2009-07-01 13:43:08 +0000 |
commit | d8e8cbb3117a5537c83f244aa049f6b7bdbf9504 (patch) | |
tree | 3c8c70f514804d612e67511d8dbe2bddb2743764 /qpid/java/common | |
parent | ef022b32631c787391695c2e8c0416e1fe4fad3d (diff) | |
download | qpid-python-d8e8cbb3117a5537c83f244aa049f6b7bdbf9504.tar.gz |
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
Diffstat (limited to 'qpid/java/common')
-rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLReceiver.java | 5 | ||||
-rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLSender.java | 33 |
2 files changed, 24 insertions, 14 deletions
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<ByteBuffer> 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<ByteBuffer> 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; |