summaryrefslogtreecommitdiff
path: root/qpid/cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2011-07-13 09:52:35 +0000
committerGordon Sim <gsim@apache.org>2011-07-13 09:52:35 +0000
commit436e5d7e3a8a30ab4f724604383675a4f8f70533 (patch)
tree5c0c6b64c2e1bf384642add72796f7df8f112543 /qpid/cpp
parentf87bca17a4e6ddb4a4d81d82b72034d095afb98c (diff)
downloadqpid-python-436e5d7e3a8a30ab4f724604383675a4f8f70533.tar.gz
QPID-3355: Ensure session is not deleted out from under a sync() call
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1145935 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp')
-rw-r--r--qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp b/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp
index 787be7de2a..e6255dcd6f 100644
--- a/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp
+++ b/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp
@@ -432,8 +432,11 @@ uint32_t SessionImpl::getUnsettledAcksImpl(const std::string* destination)
void SessionImpl::syncImpl(bool block)
{
- if (block) session.sync();
- else session.flush();
+ {
+ ScopedLock l(lock);
+ if (block) session.sync();
+ else session.flush();
+ }
//cleanup unconfirmed accept records:
incoming.pendingAccept();
}