From 44d5c462d51b3c12c9cdc37156f60e1fbe34b4fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Narajowski?= Date: Fri, 3 Nov 2017 10:53:06 +0100 Subject: [PATCH] mesh: Fail init on keys generation error Fail on Mesh initialization if provisioning is enabled and keys were not generated. This make it simpler to debug misconfigured devices. Ported from Zephyr PR #4691 X-Original-Commit: 935073256bf3eb64a499d4186b41f9b744302655 --- nimble/host/mesh/src/mesh.c | 6 +++++- nimble/host/mesh/src/prov.c | 11 ++++++++--- nimble/host/mesh/src/prov.h | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/nimble/host/mesh/src/mesh.c b/nimble/host/mesh/src/mesh.c index c74fb1e9f..73ef2bb3f 100644 --- a/nimble/host/mesh/src/mesh.c +++ b/nimble/host/mesh/src/mesh.c @@ -173,7 +173,11 @@ bt_mesh_init(uint8_t own_addr_type, const struct bt_mesh_prov *prov, } if (MYNEWT_VAL(BLE_MESH_PROV)) { - bt_mesh_prov_init(prov); + err = bt_mesh_prov_init(prov); + if (err) { + return err; + } + } #if (MYNEWT_VAL(BLE_MESH_PROXY)) diff --git a/nimble/host/mesh/src/prov.c b/nimble/host/mesh/src/prov.c index 8b1dd8c36..fcad1386e 100644 --- a/nimble/host/mesh/src/prov.c +++ b/nimble/host/mesh/src/prov.c @@ -1502,8 +1502,9 @@ bool bt_prov_active(void) return atomic_test_bit(link.flags, LINK_ACTIVE); } -void bt_mesh_prov_init(const struct bt_mesh_prov *prov_info) +int bt_mesh_prov_init(const struct bt_mesh_prov *prov_info) { + int err; static struct bt_pub_key_cb pub_key_cb = { .func = pub_key_ready, }; @@ -1512,8 +1513,10 @@ void bt_mesh_prov_init(const struct bt_mesh_prov *prov_info) #endif - if (bt_pub_key_gen(&pub_key_cb)) { - BT_ERR("Failed to generate public key"); + err = bt_pub_key_gen(&pub_key_cb); + if (err) { + BT_ERR("Failed to generate public key (%d)", err); + return err; } prov = prov_info; @@ -1530,6 +1533,8 @@ void bt_mesh_prov_init(const struct bt_mesh_prov *prov_info) #endif #endif /* MYNEWT_VAL(BLE_MESH_PB_ADV) */ + + return 0; } void bt_mesh_prov_reset_link(void) { diff --git a/nimble/host/mesh/src/prov.h b/nimble/host/mesh/src/prov.h index 46ceaebd2..1ac4757a5 100644 --- a/nimble/host/mesh/src/prov.h +++ b/nimble/host/mesh/src/prov.h @@ -29,7 +29,7 @@ bt_mesh_pb_gatt_recv(uint16_t conn_handle, struct os_mbuf *buf); const u8_t * bt_mesh_prov_get_uuid(void); -void +int bt_mesh_prov_init(const struct bt_mesh_prov *prov); void