Merge pull request #581 from cfromknecht/handle-nil-spend-report
Properly Handle Nil Spend Report from Neutrino Rescan
This commit is contained in:
commit
9992612d96
@ -18,6 +18,10 @@ var (
|
|||||||
// ErrOutputSpent is returned by the GetUtxo method if the target output
|
// ErrOutputSpent is returned by the GetUtxo method if the target output
|
||||||
// for lookup has already been spent.
|
// for lookup has already been spent.
|
||||||
ErrOutputSpent = errors.New("target output has been spent")
|
ErrOutputSpent = errors.New("target output has been spent")
|
||||||
|
|
||||||
|
// ErrOutputNotFound signals that the desired output could not be
|
||||||
|
// located.
|
||||||
|
ErrOutputNotFound = errors.New("target output was not found")
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetBestBlock returns the current height and hash of the best known block
|
// GetBestBlock returns the current height and hash of the best known block
|
||||||
@ -61,10 +65,19 @@ func (b *BtcWallet) GetUtxo(op *wire.OutPoint, heightHint uint32) (*wire.TxOut,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if spendReport != nil && spendReport.SpendingTx != nil {
|
// If the spend report is nil, then the output was not found in
|
||||||
|
// the rescan.
|
||||||
|
if spendReport == nil {
|
||||||
|
return nil, ErrOutputNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the spending transaction is populated in the spend report,
|
||||||
|
// this signals that the output has already been spent.
|
||||||
|
if spendReport.SpendingTx != nil {
|
||||||
return nil, ErrOutputSpent
|
return nil, ErrOutputSpent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Otherwise, the output is assumed to be in the UTXO.
|
||||||
return spendReport.Output, nil
|
return spendReport.Output, nil
|
||||||
|
|
||||||
case *chain.RPCClient:
|
case *chain.RPCClient:
|
||||||
|
Loading…
Reference in New Issue
Block a user