From fc572aba86a86c4c5e5b682e361ee778f692ec60 Mon Sep 17 00:00:00 2001 From: 0xb10c <0xb10c@gmail.com> Date: Mon, 4 Apr 2022 11:09:53 +0200 Subject: [PATCH] fix: use var_str in 'reject' msgs CommandString is (de)serialized as 12 bytes. However, BIP-61 defines the 'response-to-msg' (message that triggered the reject) field to be a var_str [1]. [1]: https://github.com/bitcoin/bips/blob/master/bip-0061.mediawiki#common-payload --- src/network/message.rs | 2 +- src/network/message_network.rs | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/network/message.rs b/src/network/message.rs index 49aa7c01..39e4a5c8 100644 --- a/src/network/message.rs +++ b/src/network/message.rs @@ -472,7 +472,7 @@ mod test { NetworkMessage::GetCFCheckpt(GetCFCheckpt{filter_type: 17, stop_hash: hash([25u8; 32]).into()}), NetworkMessage::CFCheckpt(CFCheckpt{filter_type: 27, stop_hash: hash([77u8; 32]).into(), filter_headers: vec![hash([3u8; 32]).into(), hash([99u8; 32]).into()]}), NetworkMessage::Alert(vec![45,66,3,2,6,8,9,12,3,130]), - NetworkMessage::Reject(Reject{message: CommandString::try_from("Test reject").unwrap(), ccode: RejectReason::Duplicate, reason: "Cause".into(), hash: hash([255u8; 32])}), + NetworkMessage::Reject(Reject{message: "Test reject".into(), ccode: RejectReason::Duplicate, reason: "Cause".into(), hash: hash([255u8; 32])}), NetworkMessage::FeeFilter(1000), NetworkMessage::WtxidRelay, NetworkMessage::AddrV2(vec![AddrV2Message{ addr: AddrV2::Ipv4(Ipv4Addr::new(127, 0, 0, 1)), port: 0, services: ServiceFlags::NONE, time: 0 }]), diff --git a/src/network/message_network.rs b/src/network/message_network.rs index 4422ad0c..9f6bd805 100644 --- a/src/network/message_network.rs +++ b/src/network/message_network.rs @@ -26,7 +26,6 @@ use network::address::Address; use network::constants::{self, ServiceFlags}; use consensus::{Encodable, Decodable, ReadExt}; use consensus::encode; -use network::message::CommandString; use hashes::sha256d; /// Some simple messages @@ -133,7 +132,7 @@ impl Decodable for RejectReason { #[derive(PartialEq, Eq, Clone, Debug)] pub struct Reject { /// message type rejected - pub message: CommandString, + pub message: Cow<'static, str>, /// reason of rejection as code pub ccode: RejectReason, /// reason of rejectection