From 5396c7692b87587dc35c07b2c6239782efd20739 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Tue, 7 Feb 2017 14:10:43 +0000 Subject: Do not expect a new line, rather buffer up the response in IPC --- test/RPCSession.cpp | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) (limited to 'test/RPCSession.cpp') diff --git a/test/RPCSession.cpp b/test/RPCSession.cpp index 791d2cfe..8d18d118 100644 --- a/test/RPCSession.cpp +++ b/test/RPCSession.cpp @@ -18,6 +18,7 @@ */ /** @file RPCSession.cpp * @author Dimtiry Khokhlov + * @author Alex Beregszaszi * @date 2016 */ @@ -91,18 +92,17 @@ string IPCSocket::sendRequest(string const& _req) if (!fSuccess) BOOST_FAIL("WriteFile to pipe failed"); - DWORD cbRead; - TCHAR chBuf[c_buffsize]; + DWORD cbRead; // Read from the pipe. fSuccess = ReadFile( - m_socket, // pipe handle - chBuf, // buffer to receive reply - c_buffsize,// size of buffer - &cbRead, // number of bytes read - NULL); // not overlapped + m_socket, // pipe handle + m_readBuf, // buffer to receive reply + sizeof(m_readBuf), // size of buffer + &cbRead, // number of bytes read + NULL); // not overlapped - returnStr += chBuf; + returnStr += m_readBuf; if (!fSuccess) BOOST_FAIL("ReadFile from pipe failed"); @@ -112,16 +112,12 @@ string IPCSocket::sendRequest(string const& _req) if (send(m_socket, _req.c_str(), _req.length(), 0) != (ssize_t)_req.length()) BOOST_FAIL("Writing on IPC failed"); - char c; - string response; - while (recv(m_socket, &c, 1, 0) == 1) - { - if (c != '\n') - response += c; - else - break; - } - return response; + ssize_t ret = recv(m_socket, m_readBuf, sizeof(m_readBuf), 0); + + if (ret < 0) + BOOST_FAIL("Reading on IPC failed"); + + return string(m_readBuf, m_readBuf + ret); #endif } -- cgit