@@ -571,18 +571,13 @@ bool CNode::ReceiveMsgBytes(const char *pch, unsigned int nBytes, bool& complete
571
571
nRecvBytes += nBytes;
572
572
while (nBytes > 0 ) {
573
573
// absorb network data
574
- int handled;
575
- if (!m_deserializer->in_data )
576
- handled = m_deserializer->readHeader (pch, nBytes);
577
- else
578
- handled = m_deserializer->readData (pch, nBytes);
579
-
574
+ int handled = m_deserializer->Read (pch, nBytes);
580
575
if (handled < 0 ) {
581
576
m_deserializer->Reset ();
582
577
return false ;
583
578
}
584
579
585
- if (m_deserializer->in_data && m_deserializer-> hdr . nMessageSize > MAX_PROTOCOL_MESSAGE_LENGTH ) {
580
+ if (m_deserializer->OversizedMessageDetected () ) {
586
581
LogPrint (BCLog::NET, " Oversized message from peer=%i, disconnecting\n " , GetId ());
587
582
m_deserializer->Reset ();
588
583
return false ;
@@ -591,13 +586,13 @@ bool CNode::ReceiveMsgBytes(const char *pch, unsigned int nBytes, bool& complete
591
586
pch += handled;
592
587
nBytes -= handled;
593
588
594
- if (m_deserializer->complete ()) {
589
+ if (m_deserializer->Complete ()) {
595
590
// decompose a transport agnostic CNetMessage from the deserializer
596
591
CNetMessage msg = m_deserializer->GetMessage (Params ().MessageStart (), nTimeMicros);
597
592
598
593
// store received bytes per message command
599
594
// to prevent a memory DOS, only allow valid commands
600
- mapMsgCmdSize::iterator i = mapRecvBytesPerMsgCmd.find (m_deserializer-> hdr . pchCommand );
595
+ mapMsgCmdSize::iterator i = mapRecvBytesPerMsgCmd.find (msg. m_command );
601
596
if (i == mapRecvBytesPerMsgCmd.end ())
602
597
i = mapRecvBytesPerMsgCmd.find (NET_MESSAGE_COMMAND_OTHER);
603
598
assert (i != mapRecvBytesPerMsgCmd.end ());
@@ -639,7 +634,7 @@ int CNode::GetSendVersion() const
639
634
return nSendVersion;
640
635
}
641
636
642
- int TransportDeserializer ::readHeader (const char *pch, unsigned int nBytes)
637
+ int V1TransportDeserializer ::readHeader (const char *pch, unsigned int nBytes)
643
638
{
644
639
// copy data to temporary parsing buffer
645
640
unsigned int nRemaining = 24 - nHdrPos;
@@ -670,7 +665,7 @@ int TransportDeserializer::readHeader(const char *pch, unsigned int nBytes)
670
665
return nCopy;
671
666
}
672
667
673
- int TransportDeserializer ::readData (const char *pch, unsigned int nBytes)
668
+ int V1TransportDeserializer ::readData (const char *pch, unsigned int nBytes)
674
669
{
675
670
unsigned int nRemaining = hdr.nMessageSize - nDataPos;
676
671
unsigned int nCopy = std::min (nRemaining, nBytes);
@@ -687,15 +682,15 @@ int TransportDeserializer::readData(const char *pch, unsigned int nBytes)
687
682
return nCopy;
688
683
}
689
684
690
- const uint256& TransportDeserializer ::GetMessageHash () const
685
+ const uint256& V1TransportDeserializer ::GetMessageHash () const
691
686
{
692
- assert (complete ());
687
+ assert (Complete ());
693
688
if (data_hash.IsNull ())
694
689
hasher.Finalize (data_hash.begin ());
695
690
return data_hash;
696
691
}
697
692
698
- CNetMessage TransportDeserializer ::GetMessage (const CMessageHeader::MessageStartChars& message_start, int64_t time) {
693
+ CNetMessage V1TransportDeserializer ::GetMessage (const CMessageHeader::MessageStartChars& message_start, int64_t time) {
699
694
// decompose a single CNetMessage from the TransportDeserializer
700
695
CNetMessage msg (std::move (vRecv));
701
696
@@ -2708,7 +2703,7 @@ CNode::CNode(NodeId idIn, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn
2708
2703
LogPrint (BCLog::NET, " Added connection peer=%d\n " , id);
2709
2704
}
2710
2705
2711
- m_deserializer = MakeUnique<TransportDeserializer>( TransportDeserializer (Params ().MessageStart (), SER_NETWORK, INIT_PROTO_VERSION));
2706
+ m_deserializer = MakeUnique<V1TransportDeserializer>( V1TransportDeserializer (Params ().MessageStart (), SER_NETWORK, INIT_PROTO_VERSION));
2712
2707
}
2713
2708
2714
2709
CNode::~CNode ()
0 commit comments