Send orphan root in notifies instead of its parent.

The notification for orphan blocks was sending the parent of orphan root
instead of the orphan root itself.
This commit is contained in:
Dave Collins 2013-08-22 14:37:06 -05:00
parent 2835238287
commit f4bae7dc41
2 changed files with 6 additions and 4 deletions

View file

@ -168,19 +168,21 @@ func (b *BlockChain) DisableVerify(disable bool) {
// getOrphanRoot returns the head of the chain for the provided hash from the // getOrphanRoot returns the head of the chain for the provided hash from the
// map of orphan blocks. // map of orphan blocks.
func (b *BlockChain) getOrphanRoot(sha *btcwire.ShaHash) *btcwire.ShaHash { func (b *BlockChain) getOrphanRoot(hash *btcwire.ShaHash) *btcwire.ShaHash {
// Keep looping while the parent of each orphaned block is // Keep looping while the parent of each orphaned block is
// known and is an orphan itself. // known and is an orphan itself.
prevHash := sha orphanRoot := hash
prevHash := hash
for { for {
orphan, exists := b.orphans[*prevHash] orphan, exists := b.orphans[*prevHash]
if !exists { if !exists {
break break
} }
orphanRoot = prevHash
prevHash = &orphan.block.MsgBlock().Header.PrevBlock prevHash = &orphan.block.MsgBlock().Header.PrevBlock
} }
return prevHash return orphanRoot
} }
// removeOrphanBlock removes the passed orphan block from the orphan pool and // removeOrphanBlock removes the passed orphan block from the orphan pool and

View file

@ -151,7 +151,7 @@ func (b *BlockChain) ProcessBlock(block *btcutil.Block) error {
// Get the hash for the head of the orphaned block chain for // Get the hash for the head of the orphaned block chain for
// this block and notify the caller so it can request missing // this block and notify the caller so it can request missing
// blocks. // blocks.
orphanRoot := b.getOrphanRoot(prevHash) orphanRoot := b.getOrphanRoot(blockHash)
b.sendNotification(NTOrphanBlock, orphanRoot) b.sendNotification(NTOrphanBlock, orphanRoot)
return nil return nil
} }