Handle replies in ctrl_cmd_handle()

Previously *_REPLY and ERROR messages were not explicitly handled which
would lead to sending error in response to them which in turn would
prompt other party to send error as well which would result in infinite
cycle.

Handle it explicitly by logging message id and other relevant data.

Change-Id: Id96f3a2fc81fa4549f49556d83f062c6b2f59e28
Related: OS#1615
This commit is contained in:
Max 2017-02-24 14:48:45 +01:00
parent 70c7d4160d
commit 2ed3659cac
1 changed files with 17 additions and 0 deletions

View File

@ -186,6 +186,23 @@ int ctrl_cmd_handle(struct ctrl_handle *ctrl, struct ctrl_cmd *cmd,
vector vline, cmdvec, cmds_vec;
if (cmd->type == CTRL_TYPE_SET_REPLY ||
cmd->type == CTRL_TYPE_GET_REPLY) {
if (strncmp(cmd->reply, "OK", 2) == 0) {
LOGP(DLCTRL, LOGL_DEBUG, "%s <%s> for %s is OK\n",
get_value_string(ctrl_type_vals, cmd->type),
cmd->id, cmd->variable);
return CTRL_CMD_HANDLED;
}
}
if (cmd->type == CTRL_TYPE_ERROR) {
LOGP(DLCTRL, LOGL_ERROR, "%s <%s> for %s is %s\n",
get_value_string(ctrl_type_vals, cmd->type),
cmd->id, cmd->variable, cmd->reply);
return CTRL_CMD_HANDLED;
}
ret = CTRL_CMD_ERROR;
cmd->reply = NULL;
node = CTRL_NODE_ROOT;