diff options
author | Kenneth Anthony Giusti <kgiusti@apache.org> | 2011-08-08 14:56:43 +0000 |
---|---|---|
committer | Kenneth Anthony Giusti <kgiusti@apache.org> | 2011-08-08 14:56:43 +0000 |
commit | b9fdd56f3c0797990a5e52b009eb72b01ac6eaab (patch) | |
tree | 893b637418e5ef26dee86e0a3083385e58e04975 | |
parent | 2617882a73d9f0fe2d21bb3926feff33c490c7df (diff) | |
download | qpid-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.cpp | 5 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/broker/SessionState.h | 10 |
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(); |