diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-06-08 13:49:39 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-06-08 13:49:39 +0000 |
commit | c1f7605e7afb22c24f4b241afd36526e6181e7ef (patch) | |
tree | 6e3bb5a499ae838a046abec381aeb1f16aba6df4 /hcid/dbus-database.c | |
parent | 1008177538c7f2fac766d6144b7f653719c56328 (diff) |
Fix missing disconnect watch id handling
Diffstat (limited to 'hcid/dbus-database.c')
-rw-r--r-- | hcid/dbus-database.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/hcid/dbus-database.c b/hcid/dbus-database.c index e9df79b0..c6a689d2 100644 --- a/hcid/dbus-database.c +++ b/hcid/dbus-database.c @@ -75,6 +75,8 @@ static void exit_callback(void *user_data) { struct record_data *user_record = user_data; + debug("remove record"); + records = g_slist_remove(records, user_record); remove_record_from_server(user_record->handle); @@ -150,6 +152,8 @@ static DBusMessage *add_service_record(DBusConnection *conn, user_record, NULL); + debug("listener_id %d", user_record->listener_id); + return g_dbus_create_reply(msg, DBUS_TYPE_UINT32, &user_record->handle, DBUS_TYPE_INVALID); } @@ -180,8 +184,10 @@ int add_xml_record(DBusConnection *conn, const char *sender, bdaddr_t *src, records = g_slist_append(records, user_record); - g_dbus_add_disconnect_watch(conn, sender, exit_callback, user_record, - NULL); + user_record->listener_id = g_dbus_add_disconnect_watch(conn, sender, + exit_callback, user_record, NULL); + + debug("listener_id %d", user_record->listener_id); *handle = user_record->handle; @@ -320,18 +326,17 @@ int remove_record(DBusConnection *conn, const char *sender, { struct record_data *user_record; + debug("remove record 0x%x", handle); + user_record = find_record(handle, sender); if (!user_record) return -1; - g_dbus_remove_watch(conn, user_record->listener_id); + debug("listner_id %d", user_record->listener_id); - records = g_slist_remove(records, user_record); - - remove_record_from_server(handle); + g_dbus_remove_watch(conn, user_record->listener_id); - g_free(user_record->sender); - g_free(user_record); + exit_callback(user_record); return 0; } |