pldm: libpldmresponder: call ccOnlyResponse when en/decoding errors

Should return ccOnlyResponse when en/decoding process encounters an
error, to avoid redundant data in response.

Signed-off-by: George Liu <liuxiwei@inspur.com>
Change-Id: I8ae02f588740de1ffd6dde99c92046b7cc1d5c39
diff --git a/libpldmresponder/base.cpp b/libpldmresponder/base.cpp
index 4d0c4f9..1071324 100644
--- a/libpldmresponder/base.cpp
+++ b/libpldmresponder/base.cpp
@@ -56,8 +56,12 @@
 
     Response response(sizeof(pldm_msg_hdr) + PLDM_GET_TYPES_RESP_BYTES, 0);
     auto responsePtr = reinterpret_cast<pldm_msg*>(response.data());
-    encode_get_types_resp(request->hdr.instance_id, PLDM_SUCCESS, types.data(),
-                          responsePtr);
+    auto rc = encode_get_types_resp(request->hdr.instance_id, PLDM_SUCCESS,
+                                    types.data(), responsePtr);
+    if (rc != PLDM_SUCCESS)
+    {
+        return CmdHandler::ccOnlyResponse(request, rc);
+    }
 
     return response;
 }
@@ -74,19 +78,15 @@
 
     if (rc != PLDM_SUCCESS)
     {
-        encode_get_commands_resp(request->hdr.instance_id, rc, nullptr,
-                                 responsePtr);
-        return response;
+        return CmdHandler::ccOnlyResponse(request, rc);
     }
 
     // DSP0240 has this as a bitfield8[N], where N = 0 to 31
     std::array<bitfield8_t, 32> cmds{};
     if (capabilities.find(type) == capabilities.end())
     {
-        encode_get_commands_resp(request->hdr.instance_id,
-                                 PLDM_ERROR_INVALID_PLDM_TYPE, nullptr,
-                                 responsePtr);
-        return response;
+        return CmdHandler::ccOnlyResponse(request,
+                                          PLDM_ERROR_INVALID_PLDM_TYPE);
     }
 
     for (const auto& cmd : capabilities.at(type))
@@ -97,8 +97,12 @@
         cmds[index].byte |= 1 << bit;
     }
 
-    encode_get_commands_resp(request->hdr.instance_id, PLDM_SUCCESS,
-                             cmds.data(), responsePtr);
+    rc = encode_get_commands_resp(request->hdr.instance_id, PLDM_SUCCESS,
+                                  cmds.data(), responsePtr);
+    if (rc != PLDM_SUCCESS)
+    {
+        return ccOnlyResponse(request, rc);
+    }
 
     return response;
 }
@@ -117,9 +121,7 @@
 
     if (rc != PLDM_SUCCESS)
     {
-        encode_get_version_resp(request->hdr.instance_id, rc, 0, 0, nullptr, 4,
-                                responsePtr);
-        return response;
+        return CmdHandler::ccOnlyResponse(request, rc);
     }
 
     ver32_t version{};
@@ -127,16 +129,18 @@
 
     if (search == versions.end())
     {
-        encode_get_version_resp(request->hdr.instance_id,
-                                PLDM_ERROR_INVALID_PLDM_TYPE, 0, 0, nullptr, 4,
-                                responsePtr);
-        return response;
+        return CmdHandler::ccOnlyResponse(request,
+                                          PLDM_ERROR_INVALID_PLDM_TYPE);
     }
 
     memcpy(&version, &(search->second), sizeof(version));
-    encode_get_version_resp(request->hdr.instance_id, PLDM_SUCCESS, 0,
-                            PLDM_START_AND_END, &version, sizeof(pldm_version),
-                            responsePtr);
+    rc = encode_get_version_resp(request->hdr.instance_id, PLDM_SUCCESS, 0,
+                                 PLDM_START_AND_END, &version,
+                                 sizeof(pldm_version), responsePtr);
+    if (rc != PLDM_SUCCESS)
+    {
+        return ccOnlyResponse(request, rc);
+    }
 
     return response;
 }
@@ -148,8 +152,12 @@
 
     Response response(sizeof(pldm_msg_hdr) + PLDM_GET_TID_RESP_BYTES, 0);
     auto responsePtr = reinterpret_cast<pldm_msg*>(response.data());
-    encode_get_tid_resp(request->hdr.instance_id, PLDM_SUCCESS, tid,
-                        responsePtr);
+    auto rc = encode_get_tid_resp(request->hdr.instance_id, PLDM_SUCCESS, tid,
+                                  responsePtr);
+    if (rc != PLDM_SUCCESS)
+    {
+        return ccOnlyResponse(request, rc);
+    }
 
     return response;
 }