From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> If a profiles disconnects while in connecting state but ext_connect has already been called the state is never updated since ext_io_disconnected always calls btd_service_disconnecting_complete. --- src/profile.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/profile.c b/src/profile.c index 4e68afc..7c707a6 100644 --- a/src/profile.c +++ b/src/profile.c @@ -797,8 +797,13 @@ static gboolean ext_io_disconnected(GIOChannel *io, GIOCondition cond, DBG("%s disconnected from %s", ext->name, addr); drop: - if (conn->service) - btd_service_disconnecting_complete(conn->service, 0); + if (conn->service) { + if (btd_service_get_state(conn->service) == + BTD_SERVICE_STATE_CONNECTING) + bt_service_connection_complete(conn->service, -EIO); + else + btd_service_disconnecting_complete(conn->service, 0); + } ext->conns = g_slist_remove(ext->conns, conn); ext_io_destroy(conn); -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html