From 6f0b95a2a41912ec34283008d70d8bb34550e9cc Mon Sep 17 00:00:00 2001 From: Brian Gix Date: Thu, 31 Jan 2019 12:50:22 -0800 Subject: [PATCH] mesh: Add MGMT bypass when specifying controller If Daemon is started with an explicit controller specified, the MGMT search for an unused shared controller is bypassed, and the controller is opened directly. --- mesh/mesh.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/mesh/mesh.c b/mesh/mesh.c index 881b6ed73..e49653ef8 100644 --- a/mesh/mesh.c +++ b/mesh/mesh.c @@ -304,7 +304,7 @@ bool mesh_init(uint16_t index, const char *config_dir) if (initialized) return true; - if (!init_mgmt()) { + if (index == MGMT_INDEX_NONE && !init_mgmt()) { l_error("Failed to initialize mesh management"); return false; } @@ -326,12 +326,18 @@ bool mesh_init(uint16_t index, const char *config_dir) if (!storage_load_nodes(config_dir)) return false; - l_debug("send read index_list"); - if (mgmt_send(mgmt_mesh, MGMT_OP_READ_INDEX_LIST, - MGMT_INDEX_NONE, 0, NULL, - read_index_list_cb, NULL, NULL) <= 0) - return false; - + if (index == MGMT_INDEX_NONE) { + /* Use MGMT to find a candidate controller */ + l_debug("send read index_list"); + if (mgmt_send(mgmt_mesh, MGMT_OP_READ_INDEX_LIST, + MGMT_INDEX_NONE, 0, NULL, + read_index_list_cb, NULL, NULL) <= 0) + return false; + } else { + /* Open specified controller without searching */ + start_io(mesh.req_index); + return mesh.io != NULL; + } return true; } -- 2.47.3