From 2cc7aee1abe40453093306c8fef2312b650dff5d Mon Sep 17 00:00:00 2001 From: Joao Eduardo Luis Date: Wed, 27 May 2015 22:28:49 +0100 Subject: [PATCH] mon: MonitorDBStore: get_next_key() only if prefix matches get_next_key() had a bug in which we would always return the first key from the iterator, regardless of whether its prefix had been specified to the iterator. Fixes: #11786 Signed-off-by: Joao Eduardo Luis --- src/mon/MonitorDBStore.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/mon/MonitorDBStore.h b/src/mon/MonitorDBStore.h index d00d3607960b..9feb266c49ee 100644 --- a/src/mon/MonitorDBStore.h +++ b/src/mon/MonitorDBStore.h @@ -448,11 +448,13 @@ class MonitorDBStore virtual pair get_next_key() { assert(iter->valid()); - pair r = iter->raw_key(); - do { - iter->next(); - } while (iter->valid() && sync_prefixes.count(iter->raw_key().first) == 0); - return r; + + for (; iter->valid(); iter->next()) { + pair r = iter->raw_key(); + if (sync_prefixes.count(r.first) > 0) + return r; + } + return pair(); } virtual bool _is_valid() { -- 2.47.3