From a96e8bb615973b92e9848ec40985f9559a86eb32 Mon Sep 17 00:00:00 2001 From: Roger Lendenmann Date: Wed, 8 Jun 2016 15:19:37 +0200 Subject: [PATCH] Bluetooth: GATT: Fix ccc cfg clear logic on disconnect The ccc config clear logic should only clear its own cfg value if it is not bonded and not the other ones. Change-Id: I1b053b714744bdfb61fdbb445c08dffd3c9e1a1f Signed-off-by: Roger Lendenmann --- net/bluetooth/gatt.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/net/bluetooth/gatt.c b/net/bluetooth/gatt.c index b6e9da08ad8..d7a2de58b74 100644 --- a/net/bluetooth/gatt.c +++ b/net/bluetooth/gatt.c @@ -645,7 +645,7 @@ static uint8_t disconnected_cb(const struct bt_gatt_attr *attr, void *user_data) continue; } - if (!bt_addr_le_cmp(&conn->le.dst, &ccc->cfg[i].peer)) { + if (bt_addr_le_cmp(&conn->le.dst, &ccc->cfg[i].peer)) { struct bt_conn *tmp; /* Skip if there is another peer connected */ @@ -657,12 +657,12 @@ static uint8_t disconnected_cb(const struct bt_gatt_attr *attr, void *user_data) } bt_conn_unref(tmp); - - /* Clear value if not paired */ - if (!ccc->cfg[i].valid) - memset(&ccc->cfg[i].value, 0, - sizeof(ccc->cfg[i].value)); } + } else { + /* Clear value if not paired */ + if (!ccc->cfg[i].valid) + memset(&ccc->cfg[i].value, 0, + sizeof(ccc->cfg[i].value)); } }