diff --git a/nimble/host/mesh/src/prov.c b/nimble/host/mesh/src/prov.c index 0a2d3b293..04cab17d3 100644 --- a/nimble/host/mesh/src/prov.c +++ b/nimble/host/mesh/src/prov.c @@ -1179,7 +1179,14 @@ static void link_open(struct prov_rx *rx, struct os_mbuf *buf) } if (atomic_test_bit(link.flags, LINK_ACTIVE)) { - BT_WARN("Ignoring bearer open: link already active"); + /* Send another link ack if the provisioner missed the last */ + if (link.id == rx->link_id && link.expect == PROV_INVITE) { + BT_DBG("Resending link ack"); + bearer_ctl_send(LINK_ACK, NULL, 0); + } else { + BT_WARN("Ignoring bearer open: link already active"); + } + return; }