Diff between f9a27a69d512c618085a98a8e71d80c0ea65ef34 and e20248510748e725411045b675cf4d812ba86385

Changed Files

File Additions Deletions Status
audio/a2dp.c +10 -2 modified
src/manager.c +4 -1 modified

Full Patch

diff --git a/audio/a2dp.c b/audio/a2dp.c
index bb065d4..84d9db8 100644
--- a/audio/a2dp.c
+++ b/audio/a2dp.c
@@ -1547,12 +1547,20 @@ void a2dp_unregister(const bdaddr_t *src)
 	if (!server)
 		return;
 
-	g_slist_free_full(server->sinks, (GDestroyNotify) a2dp_remove_sep);
-	g_slist_free_full(server->sources, (GDestroyNotify) a2dp_remove_sep);
+	g_slist_free_full(server->sinks, (GDestroyNotify) a2dp_unregister_sep);
+	g_slist_free_full(server->sources,
+					(GDestroyNotify) a2dp_unregister_sep);
 
 	avdtp_exit(src);
 
 	servers = g_slist_remove(servers, server);
+
+	if (server->source_record_id)
+		remove_record_from_server(server->source_record_id);
+
+	if (server->sink_record_id)
+		remove_record_from_server(server->sink_record_id);
+
 	g_free(server);
 
 	if (servers)
diff --git a/src/manager.c b/src/manager.c
index e31f432..a725588 100644
--- a/src/manager.c
+++ b/src/manager.c
@@ -298,7 +298,10 @@ static void manager_remove_adapter(struct btd_adapter *adapter)
 
 void manager_cleanup(DBusConnection *conn, const char *path)
 {
-	g_slist_free_full(adapters, (GDestroyNotify) manager_remove_adapter);
+	g_slist_free_full(adapters, (GDestroyNotify) adapter_remove);
+
+	adapters = NULL;
+	btd_start_exit_timer();
 
 	g_dbus_unregister_interface(conn, "/", MANAGER_INTERFACE);
 }