diff options
| author | Rajith Muditha Attapattu <rajith@apache.org> | 2009-05-04 22:21:06 +0000 |
|---|---|---|
| committer | Rajith Muditha Attapattu <rajith@apache.org> | 2009-05-04 22:21:06 +0000 |
| commit | f68c0afd4995af69e1a2cd8fdf7494e5a01b1234 (patch) | |
| tree | e1c325e1c4c158efc4ccd9308a0b80a3525df27c /java/common | |
| parent | 6dcfbfb5b735317ab011f77afdf051c767acb4b3 (diff) | |
| download | qpid-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.java | 14 |
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; |
