Re: [PATCH BlueZ 4/4] gatt: Fix assuming service changed has been subscribed

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

 



Hi Sathish,

On Wed, Jan 20, 2021 at 1:30 AM Sathish Narasimman <nsathish41@xxxxxxxxx> wrote:
>
> Hi Luiz
>
> On Sat, Jan 9, 2021 at 2:48 AM Luiz Augusto von Dentz
> <luiz.dentz@xxxxxxxxx> wrote:
> >
> > From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>
> >
> > Unfortunately assuming service changed has been subscribed may cause
> > indication to time out in some peripherals (Logitech M720 Triathlon, Mx
> > Anywhere 2, Lenovo Mice N700, RAPOO BleMouse and Microsoft Designer
> > Mouse) even though the expect actually mandates that the client responds
> > with confirmation these peripherals just ignores it completely which
> > leads them to be disconnected whenever bluetoothd is restarted or the
> > system reboots.
> > ---
> >  src/device.c        | 11 ++---------
> >  src/gatt-database.c |  2 +-
> >  2 files changed, 3 insertions(+), 10 deletions(-)
> >
> > diff --git a/src/device.c b/src/device.c
> > index fe885aa64..af13badfc 100644
> > --- a/src/device.c
> > +++ b/src/device.c
> > @@ -5831,18 +5831,11 @@ void device_load_svc_chng_ccc(struct btd_device *device, uint16_t *ccc_le,
> >         key_file = g_key_file_new();
> >         g_key_file_load_from_file(key_file, filename, 0, NULL);
> >
> > -       /*
> > -        * If there is no "ServiceChanged" section we may be loading data from
> > -        * old version which did not persist Service Changed CCC values. Let's
> > -        * check if we are bonded and assume indications were enabled by peer
> > -        * in such case - it should have done this anyway.
> > -        */
> >         if (!g_key_file_has_group(key_file, "ServiceChanged")) {
> >                 if (ccc_le)
> > -                       *ccc_le = device->le_state.bonded ? 0x0002 : 0x0000;
> > +                       *ccc_le = 0x0000;
> >                 if (ccc_bredr)
> > -                       *ccc_bredr = device->bredr_state.bonded ?
> > -                                                       0x0002 : 0x0000;
> > +                       *ccc_bredr = 0x0000;
> >                 g_key_file_free(key_file);
> >                 return;
> >         }
> > diff --git a/src/gatt-database.c b/src/gatt-database.c
> > index b7d2bea1d..d99604826 100644
> > --- a/src/gatt-database.c
> > +++ b/src/gatt-database.c
> > @@ -333,7 +333,7 @@ static void att_disconnected(int err, void *user_data)
> >                 handle = gatt_db_attribute_get_handle(state->db->svc_chngd_ccc);
> >
> >                 ccc = find_ccc_state(state, handle);
> > -               if (ccc)
> > +               if (ccc && ccc->value)
> >                         device_store_svc_chng_ccc(device, state->bdaddr_type,
> >                                                                 ccc->value);
> >
> > --
> > 2.26.2
> >
>
> Was this patch is merged?

Yes, https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=39054d59c0ecdb102f8aa352cb7aa6fcbd7f2b6b

> Regards
> Sathish N



-- 
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