Skip to content

Commit

Permalink
Merge pull request #258 from kcalvinalvin/2025-02-06-add-handling-cod…
Browse files Browse the repository at this point in the history
…e-for-getutreexoroot

peer, main: add handling code for getutreexoroot
  • Loading branch information
kcalvinalvin authored Feb 6, 2025
2 parents eff027b + e4627c8 commit 24d44b2
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
9 changes: 9 additions & 0 deletions peer/peer.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,10 @@ type MessageListeners struct {
// message.
OnGetUtreexoHeader func(p *Peer, msg *wire.MsgGetUtreexoHeader)

// OnGetUtreexoRoot is invoked when a peer receives a getutreexoroot bitcoin
// message.
OnGetUtreexoRoot func(p *Peer, msg *wire.MsgGetUtreexoRoot)

// OnGetCFilters is invoked when a peer receives a getcfilters bitcoin
// message.
OnGetCFilters func(p *Peer, msg *wire.MsgGetCFilters)
Expand Down Expand Up @@ -1521,6 +1525,11 @@ out:
p.cfg.Listeners.OnGetUtreexoHeader(p, msg)
}

case *wire.MsgGetUtreexoRoot:
if p.cfg.Listeners.OnGetUtreexoRoot != nil {
p.cfg.Listeners.OnGetUtreexoRoot(p, msg)
}

case *wire.MsgGetCFilters:
if p.cfg.Listeners.OnGetCFilters != nil {
p.cfg.Listeners.OnGetCFilters(p, msg)
Expand Down
27 changes: 27 additions & 0 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -1378,6 +1378,32 @@ func (sp *serverPeer) OnGetUtreexoProof(_ *peer.Peer, msg *wire.MsgGetUtreexoPro
sp.QueueMessage(&utreexoProof, nil)
}

// OnGetUtreexoRoot is invoked when a peer receives a getutreexoroot bitcoin message.
func (sp *serverPeer) OnGetUtreexoRoot(_ *peer.Peer, msg *wire.MsgGetUtreexoRoot) {
// Ignore getutreexoroot requests if not in sync.
if !sp.server.syncManager.IsCurrent() {
return
}

// Check if we're a utreexo bridge node. Ignore if we're not.
if sp.server.flatUtreexoProofIndex == nil {
return
}

var err error
var utreexoRootMsg *wire.MsgUtreexoRoot
if sp.server.flatUtreexoProofIndex != nil {
utreexoRootMsg, err = sp.server.flatUtreexoProofIndex.FetchMsgUtreexoRoot(&msg.BlockHash)
if err != nil {
chanLog.Debugf("Unable to fetch the utreexo root for block hash %v: %v",
msg.BlockHash, err)
return
}
}

sp.QueueMessage(utreexoRootMsg, nil)
}

// OnUtreexoProof is invoked when a peer receives a utreexoproof bitcoin message.
func (sp *serverPeer) OnUtreexoProof(_ *peer.Peer, msg *wire.MsgUtreexoProof) {
sp.server.syncManager.QueueUtreexoProof(msg, sp.Peer)
Expand Down Expand Up @@ -2621,6 +2647,7 @@ func newPeerConfig(sp *serverPeer) *peer.Config {
OnUtreexoHeader: sp.OnUtreexoHeader,
OnUtreexoProof: sp.OnUtreexoProof,
OnGetUtreexoProof: sp.OnGetUtreexoProof,
OnGetUtreexoRoot: sp.OnGetUtreexoRoot,
OnGetData: sp.OnGetData,
OnGetBlocks: sp.OnGetBlocks,
OnGetHeaders: sp.OnGetHeaders,
Expand Down

0 comments on commit 24d44b2

Please sign in to comment.