summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2009-05-04 22:21:14 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2009-05-04 22:21:14 +0000
commitd6891a0b67d05f51665e05e01eb880f83d6fbbe7 (patch)
tree16605178158aff567c28c4ae8e43b7e088f16f58 /qpid/java
parenta78f0d8297f1bdf36e16d81e7023200156cf2b82 (diff)
downloadqpid-python-d6891a0b67d05f51665e05e01eb880f83d6fbbe7.tar.gz
This is related to QPID-1839
I added a timeout (that could be configured via qpid.ssl_timeout if needed) to notify the application, 1) if the broker fails to respond in a timely manner 2) if there was an error and the broker has already closed the connection. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@771470 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLSender.java14
1 files changed, 12 insertions, 2 deletions
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 5f456f28b1..5e878da531 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
@@ -38,6 +38,7 @@ public class SSLSender implements Sender<ByteBuffer>
private SSLEngine engine;
private int sslBufSize;
private ByteBuffer netData;
+ private long timeout = 30000;
private final Object engineState = new Object();
private final AtomicBoolean closed = new AtomicBoolean(false);
@@ -49,7 +50,8 @@ public class SSLSender implements Sender<ByteBuffer>
this.engine = engine;
this.delegate = delegate;
sslBufSize = engine.getSession().getPacketBufferSize();
- netData = ByteBuffer.allocate(sslBufSize);
+ netData = ByteBuffer.allocate(sslBufSize);
+ timeout = Long.getLong("qpid.ssl_timeout", 60000);
}
public void close()
@@ -198,14 +200,22 @@ public class SSLSender implements Sender<ByteBuffer>
flush();
synchronized(engineState)
{
+ long start = System.currentTimeMillis();
try
{
- engineState.wait();
+ 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;