+
+ /*
+ * Because this connection is ended, finalize (cancel) each
+ * notification iterator created from it.
+ */
+ for (i = 0; i < conn->iterators->len; i++) {
+ struct bt_notification_iterator_private_connection *iterator =
+ g_ptr_array_index(conn->iterators, i);
+
+ BT_LOGD("Finalizing notification iterator created by this ended connection: "
+ "conn-addr=%p, iter-addr=%p", conn, iterator);
+ bt_private_connection_notification_iterator_finalize(iterator);
+
+ /*
+ * Make sure this iterator does not try to remove itself
+ * from this connection's iterators on destruction
+ * because this connection won't exist anymore.
+ */
+ bt_private_connection_notification_iterator_set_connection(
+ iterator, NULL);
+ }
+
+ g_ptr_array_set_size(conn->iterators, 0);
+
+ if (try_remove_from_graph) {
+ bt_connection_try_remove_from_graph(conn);
+ }