summaryrefslogtreecommitdiff
path: root/qpid/java/common/src
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2011-02-09 00:02:21 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2011-02-09 00:02:21 +0000
commit6010eea9e51c08a784add179ef5539d2be64f48f (patch)
treea1522a0e6377b2d002c23cb5ae16976a82a06da7 /qpid/java/common/src
parent8f077522f48fba58b1f3ea1762fa8e6c4f56605b (diff)
downloadqpid-python-6010eea9e51c08a784add179ef5539d2be64f48f.tar.gz
QPID-3042
The createSession method in Connection.java now waits until the connection state == OPEN before it actually sends the session-attach on the wire. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1068696 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/common/src')
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
index fd19fa0512..ab9d4431a3 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
@@ -313,6 +313,17 @@ public class Connection extends ConnectionInvoker
{
synchronized (lock)
{
+ Waiter w = new Waiter(lock, timeout);
+ while (w.hasTime() && state != OPEN && error == null)
+ {
+ w.await();
+ }
+
+ if (state != OPEN)
+ {
+ throw new ConnectionException("Timed out waiting for connection to be ready. Current state is :" + state);
+ }
+
Session ssn = _sessionFactory.newSession(this, name, expiry);
sessions.put(name, ssn);
map(ssn);