summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2009-09-03 17:20:45 +0000
committerTed Ross <tross@apache.org>2009-09-03 17:20:45 +0000
commit22008b3dfae9f69f3a26df68da7852c01933111e (patch)
tree45d4b299269491d9a085687f3d7575227c31eef5 /cpp/src
parentc85b4f30bf760f38972fa91a5b9da12434c4e272 (diff)
downloadqpid-python-22008b3dfae9f69f3a26df68da7852c01933111e.tar.gz
QPID-2045 - crash when destroying a federation link with a dynamic bridge
Committed patch from Ken Guisti git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@811046 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/qpid/broker/Link.cpp4
-rwxr-xr-xcpp/src/tests/federation.py9
2 files changed, 10 insertions, 3 deletions
diff --git a/cpp/src/qpid/broker/Link.cpp b/cpp/src/qpid/broker/Link.cpp
index 9a845b0339..cdba18ccf9 100644
--- a/cpp/src/qpid/broker/Link.cpp
+++ b/cpp/src/qpid/broker/Link.cpp
@@ -200,8 +200,10 @@ void Link::destroy ()
// Move the bridges to be deleted into a local vector so there is no
// corruption of the iterator caused by bridge deletion.
- for (Bridges::iterator i = active.begin(); i != active.end(); i++)
+ for (Bridges::iterator i = active.begin(); i != active.end(); i++) {
+ (*i)->closed();
toDelete.push_back(*i);
+ }
active.clear();
for (Bridges::iterator i = created.begin(); i != created.end(); i++)
diff --git a/cpp/src/tests/federation.py b/cpp/src/tests/federation.py
index 1175074093..aa68e8198b 100755
--- a/cpp/src/tests/federation.py
+++ b/cpp/src/tests/federation.py
@@ -573,8 +573,13 @@ class FederationTests(TestBase010):
result = bridge.close()
self.assertEqual(result.status, 0)
- result = bridge2.close()
- self.assertEqual(result.status, 0)
+
+ # Extra test: don't explicitly close() bridge2. When the link is closed,
+ # it should clean up bridge2 automagically. verify_cleanup() will detect
+ # if bridge2 isn't cleaned up and will fail the test.
+ #
+ #result = bridge2.close()
+ #self.assertEqual(result.status, 0)
result = link.close()
self.assertEqual(result.status, 0)