summaryrefslogtreecommitdiff
path: root/qpid/java/common/src/main/java
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2009-07-01 13:43:08 +0000
committerRafael H. Schloming <rhs@apache.org>2009-07-01 13:43:08 +0000
commitd8e8cbb3117a5537c83f244aa049f6b7bdbf9504 (patch)
tree3c8c70f514804d612e67511d8dbe2bddb2743764 /qpid/java/common/src/main/java
parentef022b32631c787391695c2e8c0416e1fe4fad3d (diff)
downloadqpid-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/src/main/java')
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLReceiver.java5
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLSender.java33
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;