[MediaController] Fix for custom command without data 15/208815/1
authorRafal Walczyna <r.walczyna@samsung.com>
Fri, 28 Jun 2019 06:37:13 +0000 (08:37 +0200)
committerPiotr Kosko/Native/Web API (PLT) /SRPOL/Professional/삼성전자 <p.kosko@samsung.com>
Fri, 28 Jun 2019 14:09:16 +0000 (16:09 +0200)
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 <r.walczyna@samsung.com>
src/mediacontroller/mediacontroller_client.cc
src/mediacontroller/mediacontroller_server.cc

index 513dffe..05effb8 100644 (file)
@@ -514,24 +514,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);
 
index df43313..dc82787 100644 (file)
@@ -214,19 +214,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());