i = ao2_iterator_init(bridges, 0);
while ((bridge = ao2_iterator_next(&i))) {
- struct ast_bridge_snapshot *snapshot = ast_bridge_get_snapshot(bridge);
- /* ast_bridge_snapshot_to_json will return NULL if snapshot is NULL */
- struct ast_json *json_bridge = ast_bridge_snapshot_to_json(snapshot, stasis_app_get_sanitizer());
+ struct ast_bridge_snapshot *snapshot;
+ struct ast_json *json_bridge = NULL;
+
+ /* Invisible bridges don't get shown externally and have no snapshot */
+ if (ast_test_flag(&bridge->feature_flags, AST_BRIDGE_FLAG_INVISIBLE)) {
+ ao2_ref(bridge, -1);
+ continue;
+ }
+
+ snapshot = ast_bridge_get_snapshot(bridge);
+ if (snapshot) {
+ json_bridge = ast_bridge_snapshot_to_json(snapshot, stasis_app_get_sanitizer());
+ ao2_ref(snapshot, -1);
+ }
ao2_ref(bridge, -1);
- ao2_cleanup(snapshot);
+
if (!json_bridge || ast_json_array_append(json, json_bridge)) {
ao2_iterator_destroy(&i);
ast_ari_response_alloc_failed(response);