Re: [PATCH] device: Return error when ConnectProfile DBus method fails

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Pali,

On Thu, Apr 23, 2020 at 4:36 PM Pali Rohár <pali@xxxxxxxxxx> wrote:
>
> 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

Applied, notice that I did some changes to make it a little more
simple but the end result is the same.

-- 
Luiz Augusto von Dentz




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux