summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Anthony Giusti <kgiusti@apache.org>2011-08-08 14:56:43 +0000
committerKenneth Anthony Giusti <kgiusti@apache.org>2011-08-08 14:56:43 +0000
commitb9fdd56f3c0797990a5e52b009eb72b01ac6eaab (patch)
tree893b637418e5ef26dee86e0a3083385e58e04975
parent2617882a73d9f0fe2d21bb3926feff33c490c7df (diff)
downloadqpid-python-b9fdd56f3c0797990a5e52b009eb72b01ac6eaab.tar.gz
QPID-3394: merge fix from trunk0.12
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.12@1154981 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/broker/SessionState.cpp5
-rw-r--r--qpid/cpp/src/qpid/broker/SessionState.h10
2 files changed, 11 insertions, 4 deletions
diff --git a/qpid/cpp/src/qpid/broker/SessionState.cpp b/qpid/cpp/src/qpid/broker/SessionState.cpp
index ee9646931e..742dbe9be8 100644
--- a/qpid/cpp/src/qpid/broker/SessionState.cpp
+++ b/qpid/cpp/src/qpid/broker/SessionState.cpp
@@ -445,8 +445,6 @@ void SessionState::addPendingExecutionSync()
boost::intrusive_ptr<AsyncCompletion::Callback>
SessionState::IncompleteIngressMsgXfer::clone()
{
- boost::intrusive_ptr<SessionState::IncompleteIngressMsgXfer> cb(new SessionState::IncompleteIngressMsgXfer(session, msg));
-
// Optimization: this routine is *only* invoked when the message needs to be asynchronously completed.
// If the client is pending the message.transfer completion, flush now to force immediate write to journal.
if (requiresSync)
@@ -457,7 +455,8 @@ SessionState::IncompleteIngressMsgXfer::clone()
pending = true;
completerContext->addPendingMessage(msg);
}
- return cb;
+
+ return boost::intrusive_ptr<SessionState::IncompleteIngressMsgXfer>(new SessionState::IncompleteIngressMsgXfer(*this));
}
diff --git a/qpid/cpp/src/qpid/broker/SessionState.h b/qpid/cpp/src/qpid/broker/SessionState.h
index b43df0c0aa..506af85c47 100644
--- a/qpid/cpp/src/qpid/broker/SessionState.h
+++ b/qpid/cpp/src/qpid/broker/SessionState.h
@@ -256,7 +256,15 @@ class SessionState : public qpid::SessionState,
requiresAccept(m->requiresAccept()),
requiresSync(m->getFrames().getMethod()->isSync()),
pending(false) {}
- virtual ~IncompleteIngressMsgXfer() {};
+ IncompleteIngressMsgXfer( const IncompleteIngressMsgXfer& x )
+ : AsyncCommandContext(x.session, x.msg->getCommandId()),
+ session(x.session),
+ msg(x.msg),
+ requiresAccept(x.requiresAccept),
+ requiresSync(x.requiresSync),
+ pending(x.pending) {}
+
+ virtual ~IncompleteIngressMsgXfer() {};
virtual void completed(bool);
virtual boost::intrusive_ptr<AsyncCompletion::Callback> clone();