diff options
author | Alan Conway <aconway@apache.org> | 2008-05-23 13:39:07 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2008-05-23 13:39:07 +0000 |
commit | 896d94f7c27e958806b96b537a7a96208ede145a (patch) | |
tree | 35c139fcc037fde8fef675d9d730882d22781931 /cpp/src/qpid/client/ConnectionImpl.cpp | |
parent | bb4584d228b837fa70839560d72bc2a59dc1aa17 (diff) | |
download | qpid-python-896d94f7c27e958806b96b537a7a96208ede145a.tar.gz |
qpid::SessionState: Added error checking for invalid frame sequences.
client: Fix client crash on error during connection shutdown.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@659538 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/ConnectionImpl.cpp')
-rw-r--r-- | cpp/src/qpid/client/ConnectionImpl.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/cpp/src/qpid/client/ConnectionImpl.cpp b/cpp/src/qpid/client/ConnectionImpl.cpp index 67ae2293f1..bdafa795c2 100644 --- a/cpp/src/qpid/client/ConnectionImpl.cpp +++ b/cpp/src/qpid/client/ConnectionImpl.cpp @@ -52,7 +52,6 @@ ConnectionImpl::ConnectionImpl(framing::ProtocolVersion v, const ConnectionSetti connector.setTimeoutHandler(this); connector.setShutdownHandler(this); - open(settings.host, settings.port); //only set error handler once open handler.onError = boost::bind(&ConnectionImpl::closed, this, _1, _2); } @@ -135,11 +134,13 @@ ConnectionImpl::SessionVector ConnectionImpl::closeInternal(const Mutex::ScopedL } void ConnectionImpl::closed(uint16_t code, const std::string& text) -{ - Mutex::ScopedLock l(lock); - if (isClosed) return; - SessionVector save(closeInternal(l)); - Mutex::ScopedUnlock u(lock); +{ + SessionVector save; + { + Mutex::ScopedLock l(lock); + if (isClosed) return; + save = closeInternal(l); + } std::for_each(save.begin(), save.end(), boost::bind(&SessionImpl::connectionClosed, _1, code, text)); } |