summaryrefslogtreecommitdiff
path: root/python/qpid/connection.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/qpid/connection.py')
-rw-r--r--python/qpid/connection.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/python/qpid/connection.py b/python/qpid/connection.py
index 39fd7d5ff8..2c61e5a51b 100644
--- a/python/qpid/connection.py
+++ b/python/qpid/connection.py
@@ -144,8 +144,10 @@ class Connection(Framer):
self.delegate.start()
self.thread.start()
if not wait(self.condition, lambda: self.opened or self.failed, timeout):
+ self.thread.join()
raise Timeout()
if self.failed:
+ self.thread.join()
raise ConnectionFailed(*self.close_code)
def run(self):
@@ -176,7 +178,14 @@ class Connection(Framer):
seg_dec.write(*frame_dec.read())
op_dec.write(*seg_dec.read())
for op in op_dec.read():
- self.delegate.received(op)
+ try:
+ self.delegate.received(op)
+ except Closed, e:
+ self.close_code = (None, str(e))
+ if not self.opened:
+ self.failed = True
+ self.closed = True
+ notify(self.condition)
self.sock.close()
def write_op(self, op):