All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] core/gatt: Fix creating database without exprimental interfaces
@ 2015-03-02 22:00 Szymon Janc
  0 siblings, 0 replies; only message in thread
From: Szymon Janc @ 2015-03-02 22:00 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc

If bluetoothd is started without -E option gatt database should still
be created (just without experimental D-Bus interfaces).

This fix registering adapters if bluetoothd was started without -E
option.
---
 src/gatt-database.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/gatt-database.c b/src/gatt-database.c
index 65100da..6f081fa 100644
--- a/src/gatt-database.c
+++ b/src/gatt-database.c
@@ -73,6 +73,7 @@ struct btd_gatt_database {
 	struct gatt_db_attribute *svc_chngd;
 	struct gatt_db_attribute *svc_chngd_ccc;
 	struct queue *services;
+	bool dbus_registered;
 };
 
 struct external_service {
@@ -298,6 +299,7 @@ static void service_free(void *data)
 static void gatt_database_free(void *data)
 {
 	struct btd_gatt_database *database = data;
+	const char *path = adapter_get_path(database->adapter);
 
 	if (database->le_io) {
 		g_io_channel_shutdown(database->le_io, FALSE, NULL);
@@ -316,6 +318,10 @@ static void gatt_database_free(void *data)
 	if (database->gap_handle)
 		adapter_service_remove(database->adapter, database->gap_handle);
 
+	if (database->dbus_registered)
+		g_dbus_unregister_interface(btd_get_dbus_connection(), path,
+							GATT_MANAGER_IFACE);
+
 	/* TODO: Persistently store CCC states before freeing them */
 	queue_destroy(database->device_states, device_state_free);
 	queue_destroy(database->services, service_free);
@@ -1678,11 +1684,11 @@ struct btd_gatt_database *btd_gatt_database_new(struct btd_adapter *adapter)
 						manager_methods, NULL, NULL,
 						database, NULL)) {
 		error("Failed to register " GATT_MANAGER_IFACE);
-		goto fail;
-	}
-
-	DBG("GATT Manager registered for adapter: %s",
+	} else {
+		DBG("GATT Manager registered for adapter: %s",
 						adapter_get_path(adapter));
+		database->dbus_registered = true;
+	}
 
 	register_core_services(database);
 
-- 
2.1.4


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2015-03-02 22:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-02 22:00 [PATCH] core/gatt: Fix creating database without exprimental interfaces Szymon Janc

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.