res_prometheus: Do not crash on invisible bridges

Avoid crashing by skipping invisible bridges and checking the
snapshot for a null pointer. In effect this is how the bridges
are enumerated in res/ari/resource_bridges.c already.

ASTERISK-30239
ASTERISK-30237

Change-Id: I58ef9f44036feded5966b5fc70ae754f8182883d
This commit is contained in:
Holger Hans Peter Freyther 2022-09-20 08:53:18 +08:00 committed by Holger Hans Peter Freyther
parent 7fdc6334dc
commit 8d6fdf9c3a
1 changed files with 11 additions and 1 deletions

View File

@ -125,7 +125,17 @@ static void bridges_scrape_cb(struct ast_str **response)
/* Bridge dependent values */
it_bridges = ao2_iterator_init(bridges, 0);
for (i = 0; (bridge = ao2_iterator_next(&it_bridges)); ao2_ref(bridge, -1), i++) {
struct ast_bridge_snapshot *snapshot = ast_bridge_get_snapshot(bridge);
struct ast_bridge_snapshot *snapshot;
/* Invisible bridges don't get shown externally and have no snapshot */
if (ast_test_flag(&bridge->feature_flags, AST_BRIDGE_FLAG_INVISIBLE)) {
continue;
}
snapshot = ast_bridge_get_snapshot(bridge);
if (!snapshot) {
continue;
}
for (j = 0; j < ARRAY_LEN(bridge_metric_defs); j++) {
int index = i * ARRAY_LEN(bridge_metric_defs) + j;