adapter: Fix accessing NULL adv_manager
adv_manager might be NULL also if BR/EDR only mdoe is set in main.conf
or if btd_adv_manager_new failed so checking for LE in supported
settings is not enough. This also makes btd_adv_manager_refresh
consistent with other adv_manager API regarding passing NULL manager
as function parameter.
diff --git a/src/adapter.c b/src/adapter.c
index f91b041..932b2a3 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -540,8 +540,7 @@
g_dbus_emit_property_changed(dbus_conn, adapter->path,
ADAPTER_INTERFACE, "Discoverable");
store_adapter_info(adapter);
- if (adapter->supported_settings & MGMT_SETTING_LE)
- btd_adv_manager_refresh(adapter->adv_manager);
+ btd_adv_manager_refresh(adapter->adv_manager);
}
if (changed_mask & MGMT_SETTING_BONDABLE) {
diff --git a/src/advertising.c b/src/advertising.c
index b976562..0cb6eac 100644
--- a/src/advertising.c
+++ b/src/advertising.c
@@ -1173,6 +1173,9 @@
void btd_adv_manager_refresh(struct btd_adv_manager *manager)
{
+ if (!manager)
+ return;
+
queue_foreach(manager->clients, (queue_foreach_func_t)refresh_adv,
NULL);
}