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 <roger.lendenmann@intel.com>
This commit is contained in:
Roger Lendenmann 2016-06-08 15:19:37 +02:00
commit a96e8bb615

View file

@ -645,7 +645,7 @@ static uint8_t disconnected_cb(const struct bt_gatt_attr *attr, void *user_data)
continue; 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; struct bt_conn *tmp;
/* Skip if there is another peer connected */ /* Skip if there is another peer connected */
@ -657,14 +657,14 @@ static uint8_t disconnected_cb(const struct bt_gatt_attr *attr, void *user_data)
} }
bt_conn_unref(tmp); bt_conn_unref(tmp);
}
} else {
/* Clear value if not paired */ /* Clear value if not paired */
if (!ccc->cfg[i].valid) if (!ccc->cfg[i].valid)
memset(&ccc->cfg[i].value, 0, memset(&ccc->cfg[i].value, 0,
sizeof(ccc->cfg[i].value)); sizeof(ccc->cfg[i].value));
} }
} }
}
/* Reset value while disconnected */ /* Reset value while disconnected */
memset(&ccc->value, 0, sizeof(ccc->value)); memset(&ccc->value, 0, sizeof(ccc->value));