Bluetooth: GATT: Fix notifications to non-bonded peers

GATT implementation fixed so that two or more non-bonded peers
can now independently enable/disable notification and/or
indications; and subsequently receive them too.

Change-id: Ifae78297b6ba13f8ea3db58694302bb7f3449e97
Signed-off-by: Vinayak Chettimada <vinayak.kariappa.chettimada@nordicsemi.no>
This commit is contained in:
Vinayak Chettimada 2016-08-27 13:46:24 +02:00 committed by Johan Hedberg
commit f77d06ae09

View file

@ -359,8 +359,7 @@ ssize_t bt_gatt_attr_write_ccc(struct bt_conn *conn,
} }
bt_addr_le_copy(&ccc->cfg[i].peer, &conn->le.dst); bt_addr_le_copy(&ccc->cfg[i].peer, &conn->le.dst);
/* Only set valid if bonded */ ccc->cfg[i].valid = true;
ccc->cfg[i].valid = bt_addr_le_is_bonded(&conn->le.dst);
break; break;
} }
@ -672,9 +671,11 @@ static uint8_t disconnected_cb(const struct bt_gatt_attr *attr, void *user_data)
} }
} else { } else {
/* Clear value if not paired */ /* Clear value if not paired */
if (!ccc->cfg[i].valid) if (!bt_addr_le_is_bonded(&conn->le.dst)) {
ccc->cfg[i].valid = false;
memset(&ccc->cfg[i].value, 0, memset(&ccc->cfg[i].value, 0,
sizeof(ccc->cfg[i].value)); sizeof(ccc->cfg[i].value));
}
} }
} }