aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-02-07 22:10:43 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-02-09 23:40:56 +0800
commit5396c7692b87587dc35c07b2c6239782efd20739 (patch)
treee115f9db036ae30c3d4ad4832ce7667c3da14a31 /test
parentb508aac64a1c189367a34e79906a7b2553d0ad15 (diff)
downloaddexon-solidity-5396c7692b87587dc35c07b2c6239782efd20739.tar
dexon-solidity-5396c7692b87587dc35c07b2c6239782efd20739.tar.gz
dexon-solidity-5396c7692b87587dc35c07b2c6239782efd20739.tar.bz2
dexon-solidity-5396c7692b87587dc35c07b2c6239782efd20739.tar.lz
dexon-solidity-5396c7692b87587dc35c07b2c6239782efd20739.tar.xz
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')
-rw-r--r--test/RPCSession.cpp32
-rw-r--r--test/RPCSession.h5
2 files changed, 17 insertions, 20 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
}
diff --git a/test/RPCSession.h b/test/RPCSession.h
index 5369e1e2..f1aee6a8 100644
--- a/test/RPCSession.h
+++ b/test/RPCSession.h
@@ -35,7 +35,6 @@
#include <boost/test/unit_test.hpp>
#if defined(_WIN32)
-const int c_buffsize = 5120000; //because windows pipe is broken and wont work as in examples. use larger buffer limit to receive whole package in one call
class IPCSocket : public boost::noncopyable
{
public:
@@ -47,7 +46,8 @@ public:
private:
std::string m_path;
- HANDLE m_socket;
+ HANDLE m_socket;
+ TCHAR m_readBuf[512000];
};
#else
class IPCSocket: public boost::noncopyable
@@ -62,6 +62,7 @@ public:
private:
std::string m_path;
int m_socket;
+ char m_readBuf[512000];
};
#endif