Skip to content

Commit

Permalink
mgmtd: don't try to send config to disconnected clients
Browse files Browse the repository at this point in the history
When determining the interested backend clients for a configuration
change, don't consider disconnected clients. This fixes a crash in
`mgmt_txn_send_be_txn_create` when trying to send data to a non-existing
adapter.

Signed-off-by: Igor Ryzhov <[email protected]>
  • Loading branch information
idryzhov committed Jan 11, 2024
1 parent 86cbd58 commit 0eac9b6
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions mgmtd/mgmt_txn.c
Original file line number Diff line number Diff line change
Expand Up @@ -850,10 +850,9 @@ static int mgmt_txn_create_config_batches(struct mgmt_txn_req *txn_req,
enum mgmt_be_client_id id;
struct mgmt_be_client_adapter *adapter;
struct mgmt_commit_cfg_req *cmtcfg_req;
bool found_validator;
int num_chgs = 0;
int xpath_len, value_len;
uint64_t clients;
uint64_t clients, chg_clients;

cmtcfg_req = &txn_req->req.commit_cfg;

Expand Down Expand Up @@ -881,11 +880,8 @@ static int mgmt_txn_create_config_batches(struct mgmt_txn_req *txn_req,
value ? value : "NIL");

clients = mgmt_be_interested_clients(xpath, true);
cmtcfg_req->clients |= clients;
if (clients)
found_validator = true;
else
found_validator = false;

chg_clients = 0;

xpath_len = strlen(xpath) + 1;
value_len = strlen(value) + 1;
Expand All @@ -894,6 +890,8 @@ static int mgmt_txn_create_config_batches(struct mgmt_txn_req *txn_req,
if (!adapter)
continue;

chg_clients |= (1ull << id);

batch = cmtcfg_req->last_be_cfg_batch[id];
if (!batch ||
(batch->num_cfg_data ==
Expand Down Expand Up @@ -940,13 +938,15 @@ static int mgmt_txn_create_config_batches(struct mgmt_txn_req *txn_req,
num_chgs++;
}

if (!found_validator) {
if (!chg_clients) {
snprintf(err_buf, sizeof(err_buf),
"No validator module found for XPATH: '%s",
xpath);
MGMTD_TXN_ERR("***** %s", err_buf);
}

cmtcfg_req->clients |= chg_clients;

free(xpath);
}

Expand Down

0 comments on commit 0eac9b6

Please sign in to comment.