This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Max gerrit-no-reply at lists.osmocom.org
Review at https://gerrit.osmocom.org/5016
Improve get_rate_ctr() error handling
* use explicit return instead of goto for better readability
* report back expected interval values
Change-Id: I05ca7f716342af4f7424b28216ed6c1bf2bd589f
Related: OS#2550
---
M src/ctrl/control_if.c
1 file changed, 15 insertions(+), 15 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/16/5016/1
diff --git a/src/ctrl/control_if.c b/src/ctrl/control_if.c
index 07b17c9..0c71532 100644
--- a/src/ctrl/control_if.c
+++ b/src/ctrl/control_if.c
@@ -545,15 +545,17 @@
const struct rate_ctr *ctr;
dup = talloc_strdup(cmd, cmd->variable);
- if (!dup)
- goto oom;
+ if (!dup) {
+ cmd->reply = "OOM";
+ return CTRL_CMD_ERROR;
+ }
/* Skip over possible prefixes (net.) */
tmp = strstr(dup, "rate_ctr");
if (!tmp) {
talloc_free(dup);
cmd->reply = "rate_ctr not a token in rate_ctr command!";
- goto err;
+ return CTRL_CMD_ERROR;
}
strtok_r(tmp, ".", &saveptr);
@@ -561,7 +563,7 @@
if (!interval) {
talloc_free(dup);
cmd->reply = "Missing interval.";
- goto err;
+ return CTRL_CMD_ERROR;
}
if (!strcmp(interval, "abs")) {
@@ -576,8 +578,8 @@
intv = RATE_CTR_INTV_DAY;
} else {
talloc_free(dup);
- cmd->reply = "Wrong interval.";
- goto err;
+ cmd->reply = "Wrong interval. Expecting 'per_sec', 'per_min', 'per_hour', 'per_day' or 'abs' value.";
+ return CTRL_CMD_ERROR;
}
ctr_group = strtok_r(NULL, ".", &saveptr);
@@ -586,7 +588,7 @@
talloc_free(dup);
cmd->reply = "Counter group must be of name.index form e. g. "
"e1inp.0";
- goto err;
+ return CTRL_CMD_ERROR;
}
idx = atoi(ctr_idx);
@@ -595,7 +597,7 @@
if (!ctrg) {
talloc_free(dup);
cmd->reply = "Counter group with given name and index not found";
- goto err;
+ return CTRL_CMD_ERROR;
}
if (!strlen(saveptr)) {
@@ -607,20 +609,18 @@
if (!ctr) {
cmd->reply = "Counter name not found.";
talloc_free(dup);
- goto err;
+ return CTRL_CMD_ERROR;
}
talloc_free(dup);
cmd->reply = talloc_asprintf(cmd, "%"PRIu64, get_rate_ctr_value(ctr, intv));
- if (!cmd->reply)
- goto oom;
+ if (!cmd->reply) {
+ cmd->reply = "OOM";
+ return CTRL_CMD_ERROR;
+ }
return CTRL_CMD_REPLY;
-oom:
- cmd->reply = "OOM";
-err:
- return CTRL_CMD_ERROR;
}
static int set_rate_ctr(struct ctrl_cmd *cmd, void *data)
--
To view, visit https://gerrit.osmocom.org/5016
To unsubscribe, visit https://gerrit.osmocom.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I05ca7f716342af4f7424b28216ed6c1bf2bd589f
Gerrit-PatchSet: 1
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Max <msuraev at sysmocom.de>