summaryrefslogtreecommitdiff
path: root/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
commit825b92618ef6eba61ae6ab29ff8c0a08bad91b95 (patch)
treeecf658dcbfb11fe6670057cb994965868759e922 /python
parentad98e21d7691f74a9cbb309299ee0c3947f2e283 (diff)
downloadqpid-python-825b92618ef6eba61ae6ab29ff8c0a08bad91b95.tar.gz
add handling for sasl related failures during connection start
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@938558 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python')
-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):