From 3140ddd6fed4d5a294cf1f5350dc225533c3b1d4 Mon Sep 17 00:00:00 2001 From: Claudio Takahasi Date: Fri, 28 Sep 2012 11:47:52 -0300 Subject: [PATCH] gatt: Ignore Service Changed if not bonded This patch fix replying for Service Changed indication when the device is not bonded. From Erratum 3951: Indications caused by changes to the Service Changed Characteristic Value shall be considered lost if the client has not enabled indications the Client Configuration Characteristic Descriptor. --- profiles/gatt/gas.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/profiles/gatt/gas.c b/profiles/gatt/gas.c index a828fcdf6..b42aa6467 100644 --- a/profiles/gatt/gas.c +++ b/profiles/gatt/gas.c @@ -146,6 +146,11 @@ static void indication_cb(const uint8_t *pdu, uint16_t len, gpointer user_data) DBG("Service Changed start: 0x%04X end: 0x%04X", start, end); + if (device_is_bonded(gas->device) == FALSE) { + DBG("Ignoring Service Changed: device is not bonded"); + return; + } + /* Confirming indication received */ opdu = g_attrib_get_buffer(gas->attrib, &plen); olen = enc_confirmation(opdu, plen); -- 2.47.3