bt_gatt_client_set_security could fail if the security level in kernel is already BT_ATT_SECURITY_MEDIUM but long term key is not ready. So, get and check the security level before setting it. Signed-off-by: Jiayang Mao <quic_jiaymao@xxxxxxxxxxx> --- src/shared/att.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/shared/att.c b/src/shared/att.c index 4a406f4b9..dabbdb431 100644 --- a/src/shared/att.c +++ b/src/shared/att.c @@ -727,6 +727,9 @@ static bool bt_att_chan_set_security(struct bt_att_chan *chan, int level) { struct bt_security sec; + if (level == bt_att_chan_get_security(chan)) + return true; + if (chan->type == BT_ATT_LOCAL) { chan->sec_level = level; return true; -- 2.25.1