advertising: Fix creating another mgmt instance
adapter already instanciate a instance of mgmt so just reuse that
instead of creating a new one.
diff --git a/src/adapter.c b/src/adapter.c
index 67dd20b..eddfd4c 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -7981,7 +7981,7 @@
return -EINVAL;
}
- adapter->adv_manager = btd_adv_manager_new(adapter);
+ adapter->adv_manager = btd_adv_manager_new(adapter, adapter->mgmt);
db = btd_gatt_database_get_db(adapter->database);
adapter->db_id = gatt_db_register(db, services_modified,
diff --git a/src/advertising.c b/src/advertising.c
index 38d2a2d..5c9ae62 100644
--- a/src/advertising.c
+++ b/src/advertising.c
@@ -17,8 +17,6 @@
*
*/
-#include "advertising.h"
-
#include <stdint.h>
#include <stdbool.h>
#include <errno.h>
@@ -39,6 +37,7 @@
#include "src/shared/mgmt.h"
#include "src/shared/queue.h"
#include "src/shared/util.h"
+#include "advertising.h"
#define LE_ADVERTISING_MGR_IFACE "org.bluez.LEAdvertisingManager1"
#define LE_ADVERTISEMENT_IFACE "org.bluez.LEAdvertisement1"
@@ -1046,14 +1045,15 @@
remove_advertising(manager, 0);
}
-static struct btd_adv_manager *manager_create(struct btd_adapter *adapter)
+static struct btd_adv_manager *manager_create(struct btd_adapter *adapter,
+ struct mgmt *mgmt)
{
struct btd_adv_manager *manager;
manager = new0(struct btd_adv_manager, 1);
manager->adapter = adapter;
- manager->mgmt = mgmt_new_default();
+ manager->mgmt = mgmt_ref(mgmt);
if (!manager->mgmt) {
error("Failed to access management interface");
@@ -1087,14 +1087,15 @@
return NULL;
}
-struct btd_adv_manager *btd_adv_manager_new(struct btd_adapter *adapter)
+struct btd_adv_manager *btd_adv_manager_new(struct btd_adapter *adapter,
+ struct mgmt *mgmt)
{
struct btd_adv_manager *manager;
- if (!adapter)
+ if (!adapter || !mgmt)
return NULL;
- manager = manager_create(adapter);
+ manager = manager_create(adapter, mgmt);
if (!manager)
return NULL;
diff --git a/src/advertising.h b/src/advertising.h
index d98c4b8..50d8667 100644
--- a/src/advertising.h
+++ b/src/advertising.h
@@ -20,6 +20,7 @@
struct btd_adapter;
struct btd_adv_manager;
-struct btd_adv_manager *btd_adv_manager_new(struct btd_adapter *adapter);
+struct btd_adv_manager *btd_adv_manager_new(struct btd_adapter *adapter,
+ struct mgmt *mgmt);
void btd_adv_manager_destroy(struct btd_adv_manager *manager);
void btd_adv_manager_refresh(struct btd_adv_manager *manager);