Skip to content

Commit 4e0aa18

Browse files
committed
test: Add test for IPC serialization bug
Add regression test for serialization bug in IPC mining code that is not currently being called anywhere reported: Sjors/bitcoin#71 bitcoin-core/libmultiprocess#122
1 parent 2221c88 commit 4e0aa18

File tree

3 files changed

+7
-0
lines changed

3 files changed

+7
-0
lines changed

src/test/ipc_test.capnp

+1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ interface FooInterface $Proxy.wrap("FooImplementation") {
2020
passTransaction @3 (arg :Data) -> (result :Data);
2121
passVectorChar @4 (arg :Data) -> (result :Data);
2222
passBlockState @5 (arg :Mining.BlockValidationState) -> (result :Mining.BlockValidationState);
23+
passScript @6 (arg :Data) -> (result :Data);
2324
}

src/test/ipc_test.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,10 @@ void IpcPipeTest()
121121
BOOST_CHECK_EQUAL(bs3.GetRejectReason(), bs4.GetRejectReason());
122122
BOOST_CHECK_EQUAL(bs3.GetDebugMessage(), bs4.GetDebugMessage());
123123

124+
auto script1{CScript() << OP_11};
125+
auto script2{foo->passScript(script1)};
126+
BOOST_CHECK_EQUAL(HexStr(script1), HexStr(script2));
127+
124128
// Test cleanup: disconnect pipe and join thread
125129
disconnect_client();
126130
thread.join();

src/test/ipc_test.h

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#define BITCOIN_TEST_IPC_TEST_H
77

88
#include <primitives/transaction.h>
9+
#include <script/script.h>
910
#include <univalue.h>
1011
#include <util/fs.h>
1112
#include <validation.h>
@@ -19,6 +20,7 @@ class FooImplementation
1920
CTransactionRef passTransaction(CTransactionRef t) { return t; }
2021
std::vector<char> passVectorChar(std::vector<char> v) { return v; }
2122
BlockValidationState passBlockState(BlockValidationState s) { return s; }
23+
CScript passScript(CScript s) { return s; }
2224
};
2325

2426
void IpcPipeTest();

0 commit comments

Comments
 (0)