From bcbe50e22cc70b6129d28b7e0921180993aa3a1f Mon Sep 17 00:00:00 2001 From: Emiel Bruijntjes Date: Fri, 1 Aug 2014 10:05:02 +0200 Subject: [PATCH] basic.get callbacks only have to be installed for a single message, so we uninstall it right after the message was handled --- src/deferredget.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/deferredget.cpp b/src/deferredget.cpp index f412ba4..68c1383 100644 --- a/src/deferredget.cpp +++ b/src/deferredget.cpp @@ -27,9 +27,13 @@ Deferred *DeferredGet::reportSuccess(uint32_t messageCount) const // make copies of the callbacks auto messageCallback = _messageCallback; auto finalizeCallback = _finalizeCallback; + auto *channel = _channel; // we now know the name, so we can install the message callback on the channel - _channel->install("", [messageCallback, finalizeCallback](const Message &message, uint64_t deliveryTag, bool redelivered) { + _channel->install("", [channel, messageCallback, finalizeCallback](const Message &message, uint64_t deliveryTag, bool redelivered) { + + // we can remove the callback now from the channel + channel->uninstall(""); // call the callbacks if (messageCallback) messageCallback(message, deliveryTag, redelivered);