From 797719f65d587a04bb267fe87ee04c7814e9f78e Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Tue, 13 Nov 2012 12:33:18 +0200 Subject: [PATCH] core: Fix Device.Connect(Profile) error return --- src/device.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/device.c b/src/device.c index 4b0625c3d..48970d23e 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); -- 2.47.3