diff --git a/audio/a2dp.c b/audio/a2dp.c
index bb065d4..84d9db8 100644
--- a/audio/a2dp.c
+++ b/audio/a2dp.c
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
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);
}