Diff between c7955b2099dc6be46e977229d852612c4817f78f and c159d790e8786581cfa5e5a9e7bd71458a343e44

Changed Files

File Additions Deletions Status
profiles/input/device.c +7 -0 modified

Full Patch

diff --git a/profiles/input/device.c b/profiles/input/device.c
index ff4aa77..e2ac6ea 100644
--- a/profiles/input/device.c
+++ b/profiles/input/device.c
@@ -581,6 +581,13 @@ static gboolean ctrl_watch_cb(GIOChannel *chan, GIOCondition cond, gpointer data
 	if (idev->intr_io && !(cond & G_IO_NVAL))
 		g_io_channel_shutdown(idev->intr_io, TRUE, NULL);
 
+	/* It's possible this is triggered while the intr channel is not even
+	 * connected yet, therefore we are still in the connecting state.
+	 */
+	if (btd_service_get_state(idev->service) ==
+						BTD_SERVICE_STATE_CONNECTING)
+		btd_service_connecting_complete(idev->service, -EIO);
+
 	if (!idev->intr_io && idev->virtual_cable_unplug)
 		virtual_cable_unplug(idev);