diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-02-07 22:10:43 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2017-02-09 23:40:56 +0800 |
commit | 5396c7692b87587dc35c07b2c6239782efd20739 (patch) | |
tree | e115f9db036ae30c3d4ad4832ce7667c3da14a31 /test/RPCSession.cpp | |
parent | b508aac64a1c189367a34e79906a7b2553d0ad15 (diff) | |
download | dexon-solidity-5396c7692b87587dc35c07b2c6239782efd20739.tar.gz dexon-solidity-5396c7692b87587dc35c07b2c6239782efd20739.tar.zst dexon-solidity-5396c7692b87587dc35c07b2c6239782efd20739.zip |
Do not expect a new line, rather buffer up the response in IPC
Diffstat (limited to 'test/RPCSession.cpp')
-rw-r--r-- | test/RPCSession.cpp | 32 |
1 files changed, 14 insertions, 18 deletions
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 <dimitry@ethdev.com> + * @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 } |