diff options
author | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-01-25 18:47:45 +0100 |
---|---|---|
committer | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-01-25 18:47:45 +0100 |
commit | 056aa12f69614263ce10328b9ef0742d73c650b4 (patch) | |
tree | abf89ce3c09088b4d3d980be23d669be9841387b | |
parent | 0219aa93778c8937059d4856ba8223236bbe8abd (diff) |
Send back cardid only if request is valid
When trying to get information about ALSA card, fail if request
JSON is malformed.
However, send back information about all ALSA cards when no request
JSON has been transfered.
Change-Id: I2d45abb59d00cea27bfb09e74b15cc82cf84a086
Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
-rw-r--r-- | alsa-binding/Alsa-SetGet.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/alsa-binding/Alsa-SetGet.c b/alsa-binding/Alsa-SetGet.c index 29c82b3..b23e8d7 100644 --- a/alsa-binding/Alsa-SetGet.c +++ b/alsa-binding/Alsa-SetGet.c @@ -66,10 +66,8 @@ PUBLIC void NumidsListParse(ActionSetGetT action, queryValuesT *queryValues, ctl break; case json_type_string: - if(action == ACTION_GET) { - ctlRequest[idx].tag = json_object_get_string(ctlRequest[idx].jToken); - ctlRequest[idx].numId = 0; - } + ctlRequest[idx].tag = json_object_get_string(ctlRequest[idx].jToken); + ctlRequest[idx].numId = 0; break; case json_type_array: @@ -435,25 +433,26 @@ PUBLIC void alsaGetInfo(afb_req_t request) { json_object *ctlDev, *ctlDevs; char devid[32]; + json_object *rqtJ = afb_req_json(request); const char *rqtSndId = afb_req_value(request, "devid"); const char *rqtDevPath = afb_req_value(request, "devpath"); // if no specific card requested loop on all - if (rqtSndId != NULL) { + if (rqtSndId) { // only one card was requested let's probe it ctlDev = alsaCardProbe(rqtSndId, INFO_BY_DEVID); if (ctlDev != NULL) afb_req_success(request, ctlDev, NULL); else afb_req_fail_f(request, "sndscard-notfound", "SndCard '%s' Not Found", rqtSndId); } - else if (rqtDevPath != NULL) { + else if (rqtDevPath) { // only one card was requested let's probe it ctlDev = alsaCardProbe(rqtDevPath, INFO_BY_PATH); if (ctlDev != NULL) afb_req_success(request, ctlDev, NULL); else afb_req_fail_f(request, "sndscard-notfound", "SndCard '%s' Not Found", rqtSndId); } - else { + else if (!rqtJ) { // return an array of ctlDev ctlDevs = json_object_new_array(); @@ -472,6 +471,9 @@ PUBLIC void alsaGetInfo(afb_req_t request) { } afb_req_success(request, ctlDevs, NULL); } + else { + afb_req_fail_f(request, "sndscard-notfound", "Invalid request json '%s'", json_object_get_string(rqtJ)); + } } // pack Alsa element's ACL into a JSON object |