mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-05-24 08:49:29 +00:00
internal/ethapi, eth: propagate SetHead errors through Backend
Return blockchain rewind failures from debug_setHead instead of ignoring them.
This commit is contained in:
parent
d4027f3d46
commit
b9d0450dd7
5 changed files with 6 additions and 7 deletions
|
|
@ -61,9 +61,9 @@ func (b *EthAPIBackend) CurrentBlock() *types.Header {
|
|||
return b.eth.blockchain.CurrentBlock()
|
||||
}
|
||||
|
||||
func (b *EthAPIBackend) SetHead(number uint64) {
|
||||
func (b *EthAPIBackend) SetHead(number uint64) error {
|
||||
b.eth.handler.downloader.Cancel()
|
||||
b.eth.blockchain.SetHead(number)
|
||||
return b.eth.blockchain.SetHead(number)
|
||||
}
|
||||
|
||||
func (b *EthAPIBackend) HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error) {
|
||||
|
|
|
|||
|
|
@ -2126,8 +2126,7 @@ func (api *DebugAPI) SetHead(number hexutil.Uint64) error {
|
|||
if header.Number.Uint64() <= uint64(number) {
|
||||
return errors.New("not allowed to rewind to a future block")
|
||||
}
|
||||
api.b.SetHead(uint64(number))
|
||||
return nil
|
||||
return api.b.SetHead(uint64(number))
|
||||
}
|
||||
|
||||
// NetAPI offers network related RPC methods
|
||||
|
|
|
|||
|
|
@ -507,7 +507,7 @@ func (b testBackend) RPCGasCap() uint64 { return 10000000
|
|||
func (b testBackend) RPCEVMTimeout() time.Duration { return time.Second }
|
||||
func (b testBackend) RPCTxFeeCap() float64 { return 0 }
|
||||
func (b testBackend) UnprotectedAllowed() bool { return false }
|
||||
func (b testBackend) SetHead(number uint64) {}
|
||||
func (b testBackend) SetHead(number uint64) error { return nil }
|
||||
func (b testBackend) HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error) {
|
||||
if number == rpc.LatestBlockNumber {
|
||||
return b.chain.CurrentBlock(), nil
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ type Backend interface {
|
|||
RPCTxSyncMaxTimeout() time.Duration
|
||||
|
||||
// Blockchain API
|
||||
SetHead(number uint64)
|
||||
SetHead(number uint64) error
|
||||
HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error)
|
||||
HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error)
|
||||
HeaderByNumberOrHash(ctx context.Context, blockNrOrHash rpc.BlockNumberOrHash) (*types.Header, error)
|
||||
|
|
|
|||
|
|
@ -336,7 +336,7 @@ func (b *backendMock) RPCGasCap() uint64 { return 0 }
|
|||
func (b *backendMock) RPCEVMTimeout() time.Duration { return time.Second }
|
||||
func (b *backendMock) RPCTxFeeCap() float64 { return 0 }
|
||||
func (b *backendMock) UnprotectedAllowed() bool { return false }
|
||||
func (b *backendMock) SetHead(number uint64) {}
|
||||
func (b *backendMock) SetHead(number uint64) error { return nil }
|
||||
func (b *backendMock) HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue