Diff between 33bebd726e11a46a26ec7f24d0e07455532923e3 and 9dde2d57035062ecec1a699aa7e7b7e0adb411cc

Changed Files

File Additions Deletions Status
src/device.c +8 -3 modified

Full Patch

diff --git a/src/device.c b/src/device.c
index 3b59d7f..f2df9de 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1970,9 +1970,15 @@ int device_browse_primary(struct btd_device *device, DBusConnection *conn,
 
 	req = g_new0(struct browse_req, 1);
 	req->device = btd_device_ref(device);
-
 	adapter_get_address(adapter, &src);
 
+	device->browse = req;
+
+	if (device->attrib) {
+		gatt_discover_primary(device->attrib, NULL, primary_cb, req);
+		goto done;
+	}
+
 	sec_level = secure ? BT_IO_SEC_HIGH : BT_IO_SEC_LOW;
 
 	attcb = g_new0(struct att_callbacks, 1);
@@ -1994,11 +2000,10 @@ int device_browse_primary(struct btd_device *device, DBusConnection *conn,
 		return -EIO;
 	}
 
+done:
 	if (conn)
 		req->conn = dbus_connection_ref(conn);
 
-	device->browse = req;
-
 	if (msg) {
 		const char *sender = dbus_message_get_sender(msg);