parent
f46ed798f0
commit
db5b42b601
4 changed files with 15 additions and 7 deletions
|
@ -12,7 +12,7 @@ import (
|
|||
"github.com/nspcc-dev/neo-go/pkg/network/payload"
|
||||
)
|
||||
|
||||
//go:generate stringer -type=CommandType
|
||||
//go:generate stringer -type=CommandType -output=message_string.go
|
||||
|
||||
// CompressionMinSize is the lower bound to apply compression.
|
||||
const CompressionMinSize = 1024
|
||||
|
@ -68,7 +68,7 @@ const (
|
|||
CMDInv CommandType = 0x27
|
||||
CMDGetData CommandType = 0x28
|
||||
CMDGetBlockData CommandType = 0x29
|
||||
CMDUnknown CommandType = 0x2a
|
||||
CMDNotFound CommandType = 0x2a
|
||||
CMDTX = CommandType(payload.TXType)
|
||||
CMDBlock = CommandType(payload.BlockType)
|
||||
CMDConsensus = CommandType(payload.ConsensusType)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Code generated by "stringer -type=CommandType"; DO NOT EDIT.
|
||||
// Code generated by "stringer -type=CommandType -output=message_string.go"; DO NOT EDIT.
|
||||
|
||||
package network
|
||||
|
||||
|
@ -21,7 +21,7 @@ func _() {
|
|||
_ = x[CMDInv-39]
|
||||
_ = x[CMDGetData-40]
|
||||
_ = x[CMDGetBlockData-41]
|
||||
_ = x[CMDUnknown-42]
|
||||
_ = x[CMDNotFound-42]
|
||||
_ = x[CMDTX-43]
|
||||
_ = x[CMDBlock-44]
|
||||
_ = x[CMDConsensus-45]
|
||||
|
@ -39,7 +39,7 @@ const (
|
|||
_CommandType_name_2 = "CMDPingCMDPong"
|
||||
_CommandType_name_3 = "CMDGetHeadersCMDHeaders"
|
||||
_CommandType_name_4 = "CMDGetBlocksCMDMempool"
|
||||
_CommandType_name_5 = "CMDInvCMDGetDataCMDGetBlockDataCMDUnknownCMDTXCMDBlockCMDConsensus"
|
||||
_CommandType_name_5 = "CMDInvCMDGetDataCMDGetBlockDataCMDNotFoundCMDTXCMDBlockCMDConsensus"
|
||||
_CommandType_name_6 = "CMDRejectCMDFilterLoadCMDFilterAddCMDFilterClear"
|
||||
_CommandType_name_7 = "CMDMerkleBlock"
|
||||
_CommandType_name_8 = "CMDAlert"
|
||||
|
@ -51,7 +51,7 @@ var (
|
|||
_CommandType_index_2 = [...]uint8{0, 7, 14}
|
||||
_CommandType_index_3 = [...]uint8{0, 13, 23}
|
||||
_CommandType_index_4 = [...]uint8{0, 12, 22}
|
||||
_CommandType_index_5 = [...]uint8{0, 6, 16, 31, 41, 46, 54, 66}
|
||||
_CommandType_index_5 = [...]uint8{0, 6, 16, 31, 42, 47, 55, 67}
|
||||
_CommandType_index_6 = [...]uint8{0, 9, 22, 34, 48}
|
||||
)
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ func NewInventory(typ InventoryType, hashes []util.Uint256) *Inventory {
|
|||
// DecodeBinary implements Serializable interface.
|
||||
func (p *Inventory) DecodeBinary(br *io.BinReader) {
|
||||
p.Type = InventoryType(br.ReadB())
|
||||
br.ReadArray(&p.Hashes)
|
||||
br.ReadArray(&p.Hashes, MaxHashesCount)
|
||||
}
|
||||
|
||||
// EncodeBinary implements Serializable interface.
|
||||
|
|
|
@ -538,6 +538,7 @@ func (s *Server) handleMempoolCmd(p Peer) error {
|
|||
|
||||
// handleInvCmd processes the received inventory.
|
||||
func (s *Server) handleGetDataCmd(p Peer, inv *payload.Inventory) error {
|
||||
var notFound []util.Uint256
|
||||
for _, hash := range inv.Hashes {
|
||||
var msg *Message
|
||||
|
||||
|
@ -546,11 +547,15 @@ func (s *Server) handleGetDataCmd(p Peer, inv *payload.Inventory) error {
|
|||
tx, _, err := s.chain.GetTransaction(hash)
|
||||
if err == nil {
|
||||
msg = NewMessage(CMDTX, tx)
|
||||
} else {
|
||||
notFound = append(notFound, hash)
|
||||
}
|
||||
case payload.BlockType:
|
||||
b, err := s.chain.GetBlock(hash)
|
||||
if err == nil {
|
||||
msg = NewMessage(CMDBlock, b)
|
||||
} else {
|
||||
notFound = append(notFound, hash)
|
||||
}
|
||||
case payload.ConsensusType:
|
||||
if cp := s.consensus.GetPayload(hash); cp != nil {
|
||||
|
@ -571,6 +576,9 @@ func (s *Server) handleGetDataCmd(p Peer, inv *payload.Inventory) error {
|
|||
}
|
||||
}
|
||||
}
|
||||
if len(notFound) != 0 {
|
||||
return p.EnqueueP2PMessage(NewMessage(CMDNotFound, payload.NewInventory(inv.Type, notFound)))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue