diff options
Diffstat (limited to 'cpp/src/qpid')
-rw-r--r-- | cpp/src/qpid/client/LocalQueue.cpp | 7 | ||||
-rw-r--r-- | cpp/src/qpid/client/SubscriptionManager.cpp | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/cpp/src/qpid/client/LocalQueue.cpp b/cpp/src/qpid/client/LocalQueue.cpp index 09bf1e055a..7fbe4a053e 100644 --- a/cpp/src/qpid/client/LocalQueue.cpp +++ b/cpp/src/qpid/client/LocalQueue.cpp @@ -35,8 +35,11 @@ Message LocalQueue::pop() { if (!queue) throw ClosedException(); FrameSet::shared_ptr content = queue->pop(); - if (content->isA<MessageTransferBody>()) - return Message(*content, session); + if (content->isA<MessageTransferBody>()) { + Message m(*content, session); + autoAck.ack(m); + return m; + } else throw CommandInvalidException( QPID_MSG("Unexpected method: " << content->getMethod())); diff --git a/cpp/src/qpid/client/SubscriptionManager.cpp b/cpp/src/qpid/client/SubscriptionManager.cpp index fc65843643..478b8438c2 100644 --- a/cpp/src/qpid/client/SubscriptionManager.cpp +++ b/cpp/src/qpid/client/SubscriptionManager.cpp @@ -41,8 +41,8 @@ void SubscriptionManager::subscribe( MessageListener& listener, const std::string& q, const std::string& t) { std::string tag=t.empty() ? q:t; - session.messageSubscribe(arg::queue=q, arg::destination=tag); dispatcher.listen(tag, &listener); + session.messageSubscribe(arg::queue=q, arg::destination=tag); setFlowControl(tag, messages, bytes, window); } |