From: Rafal Walczyna Date: Fri, 28 Jun 2019 06:37:13 +0000 (+0200) Subject: [MediaController] Fix for custom command without data X-Git-Tag: accepted/tizen/unified/20190704.115630~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F67%2F208767%2F5;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [MediaController] Fix for custom command without data If custom command was sent without additional data then command was not parsed at all. [Verification] Tested manually Change-Id: Id35a5852a7fa61aff48fc181926e77ee01f65ff8 Signed-off-by: Rafal Walczyna --- diff --git a/src/mediacontroller/mediacontroller_client.cc b/src/mediacontroller/mediacontroller_client.cc index 6c2df8e..4b12af4 100644 --- a/src/mediacontroller/mediacontroller_client.cc +++ b/src/mediacontroller/mediacontroller_client.cc @@ -584,24 +584,22 @@ void MediaControllerClient::OnCommandReply(const char* server_name, const char* SCOPE_EXIT { free(data_str); }; + picojson::value data; ret = bundle_get_str(bundle, "data", &data_str); - if (MEDIA_CONTROLLER_ERROR_NONE != ret) { + if (BUNDLE_ERROR_NONE != ret || nullptr == data_str) { LoggerE("bundle_get_str(data) failed, error: %d", ret); - ReportError(out_o); - client->command_reply_callback_(&out); - return; + } else { + std::string err; + picojson::parse(data, data_str, data_str + strlen(data_str), &err); + if (!err.empty()) { + LoggerE("Failed to parse bundle data: %s", err.c_str()); + ReportError(out_o); + client->command_reply_callback_(&out); + return; + } } - picojson::value data; - std::string err; - picojson::parse(data, data_str, data_str + strlen(data_str), &err); - if (!err.empty()) { - LoggerE("Failed to parse bundle data: %s", err.c_str()); - ReportError(out_o); - client->command_reply_callback_(&out); - return; - } reply_o["data"] = data; reply_o["name"] = picojson::value(server_name); diff --git a/src/mediacontroller/mediacontroller_server.cc b/src/mediacontroller/mediacontroller_server.cc index 89fd7d6..a32d75b 100644 --- a/src/mediacontroller/mediacontroller_server.cc +++ b/src/mediacontroller/mediacontroller_server.cc @@ -306,19 +306,18 @@ void MediaControllerServer::OnCommandReceived(const char* client_name, const cha SCOPE_EXIT { free(data_str); }; + picojson::value data; ret = bundle_get_str(bundle, "data", &data_str); - if (MEDIA_CONTROLLER_ERROR_NONE != ret) { + if (BUNDLE_ERROR_NONE != ret || nullptr == data_str) { LoggerE("bundle_get_str(data) failed, error: %d", ret); - return; - } - - picojson::value data; - std::string err; - picojson::parse(data, data_str, data_str + strlen(data_str), &err); - if (!err.empty()) { - LoggerE("Failed to parse bundle data: %s", err.c_str()); - return; + } else { + std::string err; + picojson::parse(data, data_str, data_str + strlen(data_str), &err); + if (!err.empty()) { + LoggerE("Failed to parse bundle data: %s", err.c_str()); + return; + } } picojson::value request = picojson::value(picojson::object());