mirror of https://gerrit.osmocom.org/libosmocore
ctrl: Improve error messages in ctrl_cmd_handle
This commit is contained in:
parent
bed515f5d6
commit
5d9b203db6
|
@ -143,8 +143,10 @@ int ctrl_cmd_handle(struct ctrl_cmd *cmd, void *data)
|
||||||
|
|
||||||
vline = cmd_make_strvec(request);
|
vline = cmd_make_strvec(request);
|
||||||
talloc_free(request);
|
talloc_free(request);
|
||||||
if (!vline)
|
if (!vline) {
|
||||||
|
cmd->reply = "cmd_make_strvec failed.";
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
for (i=0;i<vector_active(vline);i++) {
|
for (i=0;i<vector_active(vline);i++) {
|
||||||
token = vector_slot(vline, i);
|
token = vector_slot(vline, i);
|
||||||
|
@ -154,47 +156,47 @@ int ctrl_cmd_handle(struct ctrl_cmd *cmd, void *data)
|
||||||
if (!strcmp(token, "net")) {
|
if (!strcmp(token, "net")) {
|
||||||
net = gsmnet;
|
net = gsmnet;
|
||||||
if (!net)
|
if (!net)
|
||||||
break;
|
goto err_missing;
|
||||||
cmd->node = net;
|
cmd->node = net;
|
||||||
node = CTRL_NODE_NET;
|
node = CTRL_NODE_NET;
|
||||||
} else if (!strcmp(token, "bts")) {
|
} else if (!strcmp(token, "bts")) {
|
||||||
if (!net)
|
if (!net)
|
||||||
break;
|
goto err_missing;
|
||||||
i++;
|
i++;
|
||||||
if (i >= vector_active(vline))
|
if (i >= vector_active(vline))
|
||||||
break;
|
goto err_index;
|
||||||
token = vector_slot(vline, i);
|
token = vector_slot(vline, i);
|
||||||
num = atoi(token);
|
num = atoi(token);
|
||||||
bts = gsm_bts_num(net, num);
|
bts = gsm_bts_num(net, num);
|
||||||
if (!bts)
|
if (!bts)
|
||||||
break;
|
goto err_missing;
|
||||||
cmd->node = bts;
|
cmd->node = bts;
|
||||||
node = CTRL_NODE_BTS;
|
node = CTRL_NODE_BTS;
|
||||||
} else if (!strcmp(token, "trx")) {
|
} else if (!strcmp(token, "trx")) {
|
||||||
if (!bts)
|
if (!bts)
|
||||||
break;
|
goto err_missing;
|
||||||
i++;
|
i++;
|
||||||
if (i >= vector_active(vline))
|
if (i >= vector_active(vline))
|
||||||
break;
|
goto err_index;
|
||||||
token = vector_slot(vline, i);
|
token = vector_slot(vline, i);
|
||||||
num = atoi(token);
|
num = atoi(token);
|
||||||
trx = gsm_bts_trx_num(bts, num);
|
trx = gsm_bts_trx_num(bts, num);
|
||||||
if (!trx)
|
if (!trx)
|
||||||
break;
|
goto err_missing;
|
||||||
cmd->node = trx;
|
cmd->node = trx;
|
||||||
node = CTRL_NODE_TRX;
|
node = CTRL_NODE_TRX;
|
||||||
} else if (!strcmp(token, "ts")) {
|
} else if (!strcmp(token, "ts")) {
|
||||||
if (!trx)
|
if (!trx)
|
||||||
break;
|
goto err_missing;
|
||||||
i++;
|
i++;
|
||||||
if (i >= vector_active(vline))
|
if (i >= vector_active(vline))
|
||||||
break;
|
goto err_index;
|
||||||
token = vector_slot(vline, i);
|
token = vector_slot(vline, i);
|
||||||
num = atoi(token);
|
num = atoi(token);
|
||||||
if ((num >= 0) && (num < TRX_NR_TS))
|
if ((num >= 0) && (num < TRX_NR_TS))
|
||||||
ts = &trx->ts[num];
|
ts = &trx->ts[num];
|
||||||
if (!ts)
|
if (!ts)
|
||||||
break;
|
goto err_missing;
|
||||||
cmd->node = ts;
|
cmd->node = ts;
|
||||||
node = CTRL_NODE_TS;
|
node = CTRL_NODE_TS;
|
||||||
} else {
|
} else {
|
||||||
|
@ -208,7 +210,7 @@ int ctrl_cmd_handle(struct ctrl_cmd *cmd, void *data)
|
||||||
cmds_vec = vector_lookup(ctrl_node_vec, node);
|
cmds_vec = vector_lookup(ctrl_node_vec, node);
|
||||||
|
|
||||||
if (!cmds_vec) {
|
if (!cmds_vec) {
|
||||||
cmd->reply = "Command not found";
|
cmd->reply = "Command not found.";
|
||||||
vector_free(cmdvec);
|
vector_free(cmdvec);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -218,6 +220,9 @@ int ctrl_cmd_handle(struct ctrl_cmd *cmd, void *data)
|
||||||
vector_free(cmdvec);
|
vector_free(cmdvec);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (i+1 == vector_active(vline))
|
||||||
|
cmd->reply = "Command not present.";
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd_free_strvec(vline);
|
cmd_free_strvec(vline);
|
||||||
|
@ -226,6 +231,17 @@ err:
|
||||||
if (ret == CTRL_CMD_ERROR)
|
if (ret == CTRL_CMD_ERROR)
|
||||||
cmd->type = CTRL_TYPE_ERROR;
|
cmd->type = CTRL_TYPE_ERROR;
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
err_missing:
|
||||||
|
cmd_free_strvec(vline);
|
||||||
|
cmd->type = CTRL_TYPE_ERROR;
|
||||||
|
cmd->reply = "Error while resolving object";
|
||||||
|
return ret;
|
||||||
|
err_index:
|
||||||
|
cmd_free_strvec(vline);
|
||||||
|
cmd->type = CTRL_TYPE_ERROR;
|
||||||
|
cmd->reply = "Error while parsing the index.";
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void control_close_conn(struct ctrl_connection *ccon)
|
static void control_close_conn(struct ctrl_connection *ccon)
|
||||||
|
|
Loading…
Reference in New Issue