summaryrefslogtreecommitdiff
path: root/java/common
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2009-05-04 22:21:06 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2009-05-04 22:21:06 +0000
commitf68c0afd4995af69e1a2cd8fdf7494e5a01b1234 (patch)
treee1c325e1c4c158efc4ccd9308a0b80a3525df27c /java/common
parent6dcfbfb5b735317ab011f77afdf051c767acb4b3 (diff)
downloadqpid-python-f68c0afd4995af69e1a2cd8fdf7494e5a01b1234.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/qpid@771470 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/common')
-rw-r--r--java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLSender.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLSender.java b/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLSender.java
index 5f456f28b1..5e878da531 100644
--- a/java/common/src/main/java/org/apache/qpid/transport/network/ssl/SSLSender.java
+++ b/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;