Browse Source

Fix json parsing in api.c

nfactor-troky
Con Kolivas 11 years ago committed by Noel Maersk
parent
commit
65d9136dd5
  1. 17
      api.c

17
api.c

@ -3673,7 +3673,7 @@ void api(int api_thr_id)
bool addrok; bool addrok;
char group; char group;
json_error_t json_err; json_error_t json_err;
json_t *json_config; json_t *json_config = NULL;
json_t *json_val; json_t *json_val;
bool isjson; bool isjson;
bool did; bool did;
@ -3848,21 +3848,18 @@ void api(int api_thr_id)
message(io_data, MSG_INVJSON, 0, NULL, isjson); message(io_data, MSG_INVJSON, 0, NULL, isjson);
send_result(io_data, c, isjson); send_result(io_data, c, isjson);
did = true; did = true;
} } else {
else {
json_val = json_object_get(json_config, JSON_COMMAND); json_val = json_object_get(json_config, JSON_COMMAND);
if (json_val == NULL) { if (json_val == NULL) {
message(io_data, MSG_MISCMD, 0, NULL, isjson); message(io_data, MSG_MISCMD, 0, NULL, isjson);
send_result(io_data, c, isjson); send_result(io_data, c, isjson);
did = true; did = true;
} } else {
else {
if (!json_is_string(json_val)) { if (!json_is_string(json_val)) {
message(io_data, MSG_INVCMD, 0, NULL, isjson); message(io_data, MSG_INVCMD, 0, NULL, isjson);
send_result(io_data, c, isjson); send_result(io_data, c, isjson);
did = true; did = true;
} } else {
else {
cmd = (char *)json_string_value(json_val); cmd = (char *)json_string_value(json_val);
json_val = json_object_get(json_config, JSON_PARAMETER); json_val = json_object_get(json_config, JSON_PARAMETER);
if (json_is_string(json_val)) if (json_is_string(json_val))
@ -3876,11 +3873,10 @@ void api(int api_thr_id)
} }
} }
} }
json_decref(json_config);
} }
} }
if (!did) if (!did) {
for (i = 0; cmds[i].name != NULL; i++) { for (i = 0; cmds[i].name != NULL; i++) {
if (strcmp(cmd, cmds[i].name) == 0) { if (strcmp(cmd, cmds[i].name) == 0) {
sprintf(cmdbuf, "|%s|", cmd); sprintf(cmdbuf, "|%s|", cmd);
@ -3896,11 +3892,14 @@ void api(int api_thr_id)
break; break;
} }
} }
}
if (!did) { if (!did) {
message(io_data, MSG_INVCMD, 0, NULL, isjson); message(io_data, MSG_INVCMD, 0, NULL, isjson);
send_result(io_data, c, isjson); send_result(io_data, c, isjson);
} }
if (json_is_object(json_config))
json_decref(json_config);
} }
} }
CLOSESOCKET(c); CLOSESOCKET(c);

Loading…
Cancel
Save