Commit 57dadb7ede8c0132f162a9b2bf57e8f0e2a5282a

Authored by Wiebe Cazemier
1 parent 17c71d06

Expire retained messages

Showing 1 changed file with 7 additions and 3 deletions
subscriptionstore.cpp
... ... @@ -479,10 +479,14 @@ void SubscriptionStore::giveClientRetainedMessagesRecursively(std::vector<std::s
479 479 {
480 480 if (cur_subtopic_it == end)
481 481 {
482   - for(const RetainedMessage &rm : this_node->retainedMessages)
  482 + auto pos = this_node->retainedMessages.begin();
  483 + while (pos != this_node->retainedMessages.end())
483 484 {
484   - // TODO: hmm, const stuff forces me/it to make copy
485   - packetList.emplace_front(rm.publish);
  485 + auto cur = pos++;
  486 + if (cur->publish.hasExpired())
  487 + this_node->retainedMessages.erase(cur);
  488 + else
  489 + packetList.emplace_front(cur->publish); // TODO: hmm, const stuff forces me/it to make copy
486 490 }
487 491 if (poundMode)
488 492 {
... ...