summaryrefslogtreecommitdiff
path: root/cpp/src
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
commit7468205a61d65aeff8a4bf7dcb87f0e5a4619949 (patch)
treeeb97ec657fc542251926d7998fd908665af1c348 /cpp/src
parent044ba5eba2479ac25f6b279563794c75db5d7119 (diff)
downloadqpid-python-7468205a61d65aeff8a4bf7dcb87f0e5a4619949.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/qpid@1145935 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/qpid/client/amqp0_10/SessionImpl.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp b/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp
index 787be7de2a..e6255dcd6f 100644
--- a/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp
+++ b/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();
}