Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp2351218ybz; Thu, 23 Apr 2020 16:33:54 -0700 (PDT) X-Google-Smtp-Source: APiQypJOL1gRqj2zxyzU9lpVI5beWGfYPwzp+fHA4v5ppcJLdDs4F9V/jjOMyGMUpJu2YHq0whSW X-Received: by 2002:a17:906:a3ca:: with SMTP id ca10mr4907587ejb.298.1587684834781; Thu, 23 Apr 2020 16:33:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587684834; cv=none; d=google.com; s=arc-20160816; b=JD1jtNPSFZNE8g8gmOJilZG2MDPWmLOklleAb5JsVy/SptppDu1sIGvEZZTRPdR6S7 2y3xx136C/aq5GOFdzVcgj2f/g6eXdix9oQD0UgfOScam1M4DTry7tEtC9lsbD8ptr1o k5VhPL4vQOVeHM90qbK3tJ3cExc++/KBeZB4xlG8HOFSy5amL0OqacbT1AcsStw0/Feu 1h9kdJ5w70/0miFWXFf3/f4LBXbRAodk+lZcj2z/i5oFLy8M27rldHW9tO1u1IaULme8 zAl/vT6BCCZsApeF7/8ksbX6IT2X0FfsWvEw3j/Vq8wbJF/6x36/R4r3v/SSI52gbfGR fEQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:to:from:dkim-signature; bh=80jvKgVFUyiR7FYbJ36poiM71LAjicP5EP5/zUgEGL4=; b=LnnYAAcTxPSw4yflQsEZwibzxwlPBeAhfUGTL0ZBc75BTPQYEtb+9WT/pE/u+icA8p LZD2gtBc6ja3Atm6eYM/ojjeGqESnTZCUAwS1pyb9fK60c1PP7iCHuuVQexCdKZUQ5Ci 911hP3B2tGTj2UzQt4SDbc4HxUB/v/LIfvhdDCm6+efyMpIPls3CIYNCmReTsx9nW2uR EJNX5Qhs8xaw2BzVSG3wA8xDNzyvK7UDVBQGRIJvkn3LJG2Si3pGaVDcJC6+fRAn/tXH IVcqoDCzok2IbIlGn+V9Cn3HTzR2XBqy4+5sjp4uBKCVkmFQPBBbbex7cd0MsdorCHUG VnzA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=vWr239aI; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bs23si2102687edb.203.2020.04.23.16.33.12; Thu, 23 Apr 2020 16:33:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=vWr239aI; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726071AbgDWXdI (ORCPT + 99 others); Thu, 23 Apr 2020 19:33:08 -0400 Received: from mail.kernel.org ([198.145.29.99]:37350 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726060AbgDWXdI (ORCPT ); Thu, 23 Apr 2020 19:33:08 -0400 Received: from pali.im (pali.im [31.31.79.79]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 03F6E20784 for ; Thu, 23 Apr 2020 23:33:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587684788; bh=MZI3kqXetRqYZNmF/nAtn3E2oorqBiw+Aq+t9Y6NEEA=; h=From:To:Subject:Date:From; b=vWr239aIdvbZ+OyFhHB3pgmetnwIRLhjHSEZpg7KTicCZXmSCgH9ljXjFiO1WGHLJ 1Zr0Pm1ncilplWu/oTYvp83LTc/LWQ2sRGgT5Ng2hHZXbA9jI2mc1yhhhrMoWlZso+ qIWMvlm2+4A/2BCEajaMwpJHBEmFj0cL3APDm8qA= Received: by pali.im (Postfix) id C29E07E0; Fri, 24 Apr 2020 01:33:05 +0200 (CEST) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: linux-bluetooth@vger.kernel.org Subject: [PATCH] device: Return error when ConnectProfile DBus method fails Date: Fri, 24 Apr 2020 01:32:43 +0200 Message-Id: <20200423233243.14937-1-pali@kernel.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Without this patch ConnectProfile DBus method does not return failure if profile connection failed and some other profile was already connected. This is not correct behavior as ConnectProfile DBus method should always return error when specified profile failed to connect. This patch fixes this it. --- src/device.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/device.c b/src/device.c index a8d95346a..7ab30705f 100644 --- a/src/device.c +++ b/src/device.c @@ -1584,6 +1584,7 @@ static void device_profile_connected(struct btd_device *dev, struct btd_profile *profile, int err) { struct btd_service *pending; + bool report_error; GSList *l; DBG("%s %s (%d)", profile->name, strerror(-err), -err); @@ -1632,9 +1633,16 @@ done: DBG("returning response to %s", dbus_message_get_sender(dev->connect)); - l = find_service_with_state(dev->services, BTD_SERVICE_STATE_CONNECTED); + if (err && dbus_message_is_method_call(dev->connect, DEVICE_INTERFACE, + "ConnectProfile")) + report_error = true; + else if (err && !find_service_with_state(dev->services, + BTD_SERVICE_STATE_CONNECTED)) + report_error = true; + else + report_error = false; - if (err && l == NULL) { + if (report_error) { /* Fallback to LE bearer if supported */ if (err == -EHOSTDOWN && dev->le && !dev->le_state.connected) { err = device_connect_le(dev); -- 2.20.1