From 0086f4a0b8b7d2f33ba247cc287857f61b5557af Mon Sep 17 00:00:00 2001 From: George Joseph Date: Wed, 9 Jul 2025 11:14:55 -0600 Subject: [PATCH] channelstorage_cpp_map_name_id: Fix callback returning non-matching channels. When the callback() API was invoked but no channel passed the test, callback would return the last channel tested instead of NULL. It now correctly returns NULL when no channel matches. Resolves: #1288 --- main/channelstorage_cpp_map_name_id.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/main/channelstorage_cpp_map_name_id.cc b/main/channelstorage_cpp_map_name_id.cc index 1b3d177067..4e73b2d5d2 100644 --- a/main/channelstorage_cpp_map_name_id.cc +++ b/main/channelstorage_cpp_map_name_id.cc @@ -151,12 +151,13 @@ static struct ast_channel *callback(struct ast_channelstorage_instance *driver, chan = it->second; if (cb_fn(chan, arg, data, ao2_flags) == (CMP_MATCH | CMP_STOP)) { ao2_bump(chan); - break; + unlock(driver); + return chan; } } unlock(driver); - return chan; + return NULL; } enum cpp_map_iterator_type { -- 2.39.5