diff --git a/peer/peer.go b/peer/peer.go index f4207e62..f6b86417 100644 --- a/peer/peer.go +++ b/peer/peer.go @@ -27,7 +27,7 @@ import ( const ( // MaxProtocolVersion is the max protocol version the peer supports. - MaxProtocolVersion = wire.SendHeadersVersion + MaxProtocolVersion = wire.FeeFilterVersion // outputBufferSize is the number of elements the output channels use. outputBufferSize = 50 @@ -140,6 +140,9 @@ type MessageListeners struct { // message. OnGetHeaders func(p *Peer, msg *wire.MsgGetHeaders) + // OnFeeFilter is invoked when a peer receives a feefilter bitcoin message. + OnFeeFilter func(p *Peer, msg *wire.MsgFeeFilter) + // OnFilterAdd is invoked when a peer receives a filteradd bitcoin message. OnFilterAdd func(p *Peer, msg *wire.MsgFilterAdd) @@ -1500,6 +1503,11 @@ out: p.cfg.Listeners.OnGetHeaders(p, msg) } + case *wire.MsgFeeFilter: + if p.cfg.Listeners.OnFeeFilter != nil { + p.cfg.Listeners.OnFeeFilter(p, msg) + } + case *wire.MsgFilterAdd: if p.cfg.Listeners.OnFilterAdd != nil { p.cfg.Listeners.OnFilterAdd(p, msg) diff --git a/peer/peer_test.go b/peer/peer_test.go index 47099317..b949fe6c 100644 --- a/peer/peer_test.go +++ b/peer/peer_test.go @@ -359,6 +359,9 @@ func TestPeerListeners(t *testing.T) { OnGetHeaders: func(p *peer.Peer, msg *wire.MsgGetHeaders) { ok <- msg }, + OnFeeFilter: func(p *peer.Peer, msg *wire.MsgFeeFilter) { + ok <- msg + }, OnFilterAdd: func(p *peer.Peer, msg *wire.MsgFilterAdd) { ok <- msg }, @@ -477,6 +480,10 @@ func TestPeerListeners(t *testing.T) { "OnGetHeaders", wire.NewMsgGetHeaders(), }, + { + "OnFeeFilter", + wire.NewMsgFeeFilter(15000), + }, { "OnFilterAdd", wire.NewMsgFilterAdd([]byte{0x01}), @@ -656,6 +663,7 @@ func TestOutboundPeer(t *testing.T) { p2.QueueMessage(wire.NewMsgMemPool(), nil) p2.QueueMessage(wire.NewMsgGetData(), nil) p2.QueueMessage(wire.NewMsgGetHeaders(), nil) + p2.QueueMessage(wire.NewMsgFeeFilter(20000), nil) p2.Disconnect() }