Diff between d460b07f125cf8d90d92737692e1c8908ce777e9 and 797719f65d587a04bb267fe87ee04c7814e9f78e

Changed Files

File Additions Deletions Status
src/device.c +17 -6 modified

Full Patch

diff --git a/src/device.c b/src/device.c
index 4b0625c..48970d2 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1239,18 +1239,28 @@ static int connect_next(struct btd_device *dev, btd_profile_cb cb)
 static void dev_profile_connected(struct btd_profile *profile,
 					struct btd_device *dev, int err)
 {
-	dev->pending = g_slist_remove(dev->pending, profile);
+	DBG("%s (%d)", strerror(-err), -err);
 
-	if (connect_next(dev, dev_profile_connected) == 0)
-		return;
+	dev->pending = g_slist_remove(dev->pending, profile);
 
-	dev->profiles_connected = TRUE;
+	if (!err) {
+		if (connect_next(dev, dev_profile_connected) == 0)
+			return;
+		dev->profiles_connected = TRUE;
+	}
 
 	if (!dev->connect)
 		return;
 
-	g_dbus_send_reply(btd_get_dbus_connection(), dev->connect,
+	DBG("returning response to %s", dbus_message_get_sender(dev->connect));
+
+	if (err)
+		g_dbus_send_message(btd_get_dbus_connection(),
+				btd_error_failed(dev->connect, strerror(-err)));
+	else
+		g_dbus_send_reply(btd_get_dbus_connection(), dev->connect,
 							DBUS_TYPE_INVALID);
+
 	dbus_message_unref(dev->connect);
 	dev->connect = NULL;
 }
@@ -1310,7 +1320,8 @@ static DBusMessage *connect_profiles(struct btd_device *dev, DBusMessage *msg,
 	GSList *l;
 	int err;
 
-	DBG("%s %s", dev->path, uuid ? uuid : "(all)");
+	DBG("%s %s, client %s", dev->path, uuid ? uuid : "(all)",
+						dbus_message_get_sender(msg));
 
 	if (dev->profiles_connected)
 		return btd_error_already_connected(msg);