summaryrefslogtreecommitdiff
path: root/qpid/python
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2010-04-27 16:49:58 +0000
committerGordon Sim <gsim@apache.org>2010-04-27 16:49:58 +0000
commit93e0f5c0349f42f454d596955ab84d563c55befb (patch)
tree1d5eb193f3f0842c128c4c4adefadf1947f5b636 /qpid/python
parent0550140874c6dc9e0cdb132568d05b2bfe67449e (diff)
downloadqpid-python-93e0f5c0349f42f454d596955ab84d563c55befb.tar.gz
add handling for sasl related failures during connection start
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@938558 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/python')
-rw-r--r--qpid/python/qpid/connection.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/qpid/python/qpid/connection.py b/qpid/python/qpid/connection.py
index 39fd7d5ff8..2c61e5a51b 100644
--- a/qpid/python/qpid/connection.py
+++ b/qpid/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):