Diff between 1496665a47cbb563080a219e0726ac0752b611f7 and 6743684d43ab821672b31ec1b9f94eb4e0367827

Changed Files

File Additions Deletions Status
src/advertising.c +10 -10 modified

Full Patch

diff --git a/src/advertising.c b/src/advertising.c
index cd78584..0eb489a 100644
--- a/src/advertising.c
+++ b/src/advertising.c
@@ -730,6 +730,16 @@ static void read_adv_features_callback(uint8_t status, uint16_t length,
 
 	manager->max_adv_len = feat->max_adv_data_len;
 	manager->max_ads = feat->max_instances;
+
+	if (manager->max_ads == 0)
+		return;
+
+	if (!g_dbus_register_interface(btd_get_dbus_connection(),
+					adapter_get_path(manager->adapter),
+					LE_ADVERTISING_MGR_IFACE,
+					methods, NULL, NULL, manager,
+					advertising_manager_destroy))
+		error("Failed to register " LE_ADVERTISING_MGR_IFACE);
 }
 
 static struct btd_advertising *
@@ -761,16 +771,6 @@ advertising_manager_create(struct btd_adapter *adapter)
 		return NULL;
 	}
 
-	if (!g_dbus_register_interface(btd_get_dbus_connection(),
-						adapter_get_path(adapter),
-						LE_ADVERTISING_MGR_IFACE,
-						methods, NULL, NULL, manager,
-						advertising_manager_destroy)) {
-		error("Failed to register " LE_ADVERTISING_MGR_IFACE);
-		free(manager);
-		return NULL;
-	}
-
 	manager->ads = queue_new();
 
 	manager->next_instance_id = 1;