aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/fuzz/p2p_transport_serialization.cpp11
-rw-r--r--src/test/fuzz/process_messages.cpp2
-rw-r--r--src/test/util/net.cpp21
-rw-r--r--src/test/util/net.h2
4 files changed, 24 insertions, 12 deletions
diff --git a/src/test/fuzz/p2p_transport_serialization.cpp b/src/test/fuzz/p2p_transport_serialization.cpp
index dcf7529918..d96215e8e0 100644
--- a/src/test/fuzz/p2p_transport_serialization.cpp
+++ b/src/test/fuzz/p2p_transport_serialization.cpp
@@ -79,7 +79,16 @@ FUZZ_TARGET(p2p_transport_serialization, .init = initialize_p2p_transport_serial
std::vector<unsigned char> header;
auto msg2 = CNetMsgMaker{msg.m_recv.GetVersion()}.Make(msg.m_type, Span{msg.m_recv});
- send_transport.prepareForTransport(msg2, header);
+ bool queued = send_transport.SetMessageToSend(msg2);
+ assert(queued);
+ std::optional<bool> known_more;
+ while (true) {
+ const auto& [to_send, more, _msg_type] = send_transport.GetBytesToSend();
+ if (known_more) assert(!to_send.empty() == *known_more);
+ if (to_send.empty()) break;
+ send_transport.MarkBytesSent(to_send.size());
+ known_more = more;
+ }
}
}
}
diff --git a/src/test/fuzz/process_messages.cpp b/src/test/fuzz/process_messages.cpp
index 2617be3fa8..98962fceb5 100644
--- a/src/test/fuzz/process_messages.cpp
+++ b/src/test/fuzz/process_messages.cpp
@@ -67,7 +67,7 @@ FUZZ_TARGET(process_messages, .init = initialize_process_messages)
CNode& random_node = *PickValue(fuzzed_data_provider, peers);
- (void)connman.ReceiveMsgFrom(random_node, net_msg);
+ (void)connman.ReceiveMsgFrom(random_node, std::move(net_msg));
random_node.fPauseSend = false;
try {
diff --git a/src/test/util/net.cpp b/src/test/util/net.cpp
index 0031770028..c071355bc0 100644
--- a/src/test/util/net.cpp
+++ b/src/test/util/net.cpp
@@ -41,7 +41,7 @@ void ConnmanTestMsg::Handshake(CNode& node,
relay_txs),
};
- (void)connman.ReceiveMsgFrom(node, msg_version);
+ (void)connman.ReceiveMsgFrom(node, std::move(msg_version));
node.fPauseSend = false;
connman.ProcessMessagesOnce(node);
peerman.SendMessages(&node);
@@ -54,7 +54,7 @@ void ConnmanTestMsg::Handshake(CNode& node,
assert(statestats.their_services == remote_services);
if (successfully_connected) {
CSerializedNetMsg msg_verack{mm.Make(NetMsgType::VERACK)};
- (void)connman.ReceiveMsgFrom(node, msg_verack);
+ (void)connman.ReceiveMsgFrom(node, std::move(msg_verack));
node.fPauseSend = false;
connman.ProcessMessagesOnce(node);
peerman.SendMessages(&node);
@@ -70,14 +70,17 @@ void ConnmanTestMsg::NodeReceiveMsgBytes(CNode& node, Span<const uint8_t> msg_by
}
}
-bool ConnmanTestMsg::ReceiveMsgFrom(CNode& node, CSerializedNetMsg& ser_msg) const
+bool ConnmanTestMsg::ReceiveMsgFrom(CNode& node, CSerializedNetMsg&& ser_msg) const
{
- std::vector<uint8_t> ser_msg_header;
- node.m_transport->prepareForTransport(ser_msg, ser_msg_header);
-
- bool complete;
- NodeReceiveMsgBytes(node, ser_msg_header, complete);
- NodeReceiveMsgBytes(node, ser_msg.data, complete);
+ bool queued = node.m_transport->SetMessageToSend(ser_msg);
+ assert(queued);
+ bool complete{false};
+ while (true) {
+ const auto& [to_send, _more, _msg_type] = node.m_transport->GetBytesToSend();
+ if (to_send.empty()) break;
+ NodeReceiveMsgBytes(node, to_send, complete);
+ node.m_transport->MarkBytesSent(to_send.size());
+ }
return complete;
}
diff --git a/src/test/util/net.h b/src/test/util/net.h
index b2f6ebb163..687ce1e813 100644
--- a/src/test/util/net.h
+++ b/src/test/util/net.h
@@ -54,7 +54,7 @@ struct ConnmanTestMsg : public CConnman {
void NodeReceiveMsgBytes(CNode& node, Span<const uint8_t> msg_bytes, bool& complete) const;
- bool ReceiveMsgFrom(CNode& node, CSerializedNetMsg& ser_msg) const;
+ bool ReceiveMsgFrom(CNode& node, CSerializedNetMsg&& ser_msg) const;
};
constexpr ServiceFlags ALL_SERVICE_FLAGS[]{