Optimised PLDM daemon to use vectored IO

This reverts commit 58c7a89cdf59e5320b45bf4c8f28cc3675a9ad18.

Signed-off-by: Zahed Hossain <zahzahed@in.ibm.com>
Change-Id: I8e786de99486ac45d710ea6918b41599cedc9c71
diff --git a/pldmd.cpp b/pldmd.cpp
index 7072312..e966164 100644
--- a/pldmd.cpp
+++ b/pldmd.cpp
@@ -71,8 +71,6 @@
             }
             response.insert(response.end(), completion_code);
         }
-        response.insert(response.begin(), type);
-        response.insert(response.begin(), eid);
     }
     return response;
 }
@@ -133,6 +131,15 @@
     pldm::responder::base::registerHandlers();
     pldm::responder::bios::registerHandlers();
 
+    // Outgoing message.
+    struct iovec iov[2]{};
+
+    // This structure contains the parameter information for the response
+    // message.
+    struct msghdr msg
+    {
+    };
+
 #ifdef OEM_IBM
     pldm::responder::oem_ibm::registerHandlers();
 #endif
@@ -218,13 +225,20 @@
                     auto response = processRxMsg(requestMsg);
                     if (!response.empty())
                     {
-                        if (verbose)
-                        {
-                            log<level::INFO>("Sending Msg ");
-                            printBuffer(response);
-                        }
-                        result = sendto(socketFd(), response.data(),
-                                        response.size(), 0, nullptr, 0);
+#ifdef VERBOSE
+                        log<level::INFO>("Sending Msg ");
+                        printBuffer(response);
+#endif
+                        iov[0].iov_base = &requestMsg[0];
+                        iov[0].iov_len =
+                            sizeof(requestMsg[0]) + sizeof(requestMsg[1]);
+                        iov[1].iov_base = response.data();
+                        iov[1].iov_len = response.size();
+
+                        msg.msg_iov = iov;
+                        msg.msg_iovlen = sizeof(iov) / sizeof(iov[0]);
+
+                        result = sendmsg(socketFd(), &msg, 0);
                         if (-1 == result)
                         {
                             returnCode = -errno;