From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: MIME-Version: 1.0 In-Reply-To: <20180209105315.24862-3-luiz.dentz@gmail.com> References: <20180209105315.24862-1-luiz.dentz@gmail.com> <20180209105315.24862-3-luiz.dentz@gmail.com> From: Luiz Augusto von Dentz Date: Mon, 12 Feb 2018 09:28:53 -0200 Message-ID: Subject: Re: [PATCH BlueZ 2/2] shared/gatt-client: Reset callbacks when unregistering To: "linux-bluetooth@vger.kernel.org" Content-Type: text/plain; charset="UTF-8" Sender: linux-bluetooth-owner@vger.kernel.org List-ID: Hi, On Fri, Feb 9, 2018 at 8:53 AM, Luiz Augusto von Dentz wrote: > From: Luiz Augusto von Dentz > > If user application is unregistering a notification handler its > callbacks shall not be called even CCC write is still holding a > reference to notify_data. > --- > src/shared/gatt-client.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/src/shared/gatt-client.c b/src/shared/gatt-client.c > index 8083ff719..1285c37ef 100644 > --- a/src/shared/gatt-client.c > +++ b/src/shared/gatt-client.c > @@ -1212,7 +1212,9 @@ static void complete_notify_request(void *data) > struct notify_data *notify_data = data; > > notify_data->att_id = 0; > - notify_data->callback(0, notify_data->user_data); > + > + if (notify_data->callback) > + notify_data->callback(0, notify_data->user_data); > } > > static bool notify_data_write_ccc(struct notify_data *notify_data, bool enable, > @@ -3157,6 +3159,10 @@ bool bt_gatt_client_unregister_notify(struct bt_gatt_client *client, > /* Remove data if it has been queued */ > queue_remove(notify_data->chrc->reg_notify_queue, notify_data); > > + /* Reset callbacks */ > + notify_data->callback = NULL; > + notify_data->notify = NULL; > + > complete_unregister_notify(notify_data); > return true; > } > -- > 2.14.3 Applied. -- Luiz Augusto von Dentz