eth/filters: return -32602 when exceeding the block range limit (#34647)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run

Co-authored-by: Felix Lange <fjl@twurst.com>
This commit is contained in:
Mael Regnery 2026-04-08 12:57:29 +02:00 committed by GitHub
parent 04e40995d9
commit a8ea6319f1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 16 additions and 4 deletions

View file

@ -19,7 +19,6 @@ package filters
import (
"context"
"errors"
"fmt"
"math"
"math/big"
"slices"
@ -147,7 +146,7 @@ func (f *Filter) Logs(ctx context.Context) ([]*types.Log, error) {
return nil, err
}
if f.rangeLimit != 0 && (end-begin) > f.rangeLimit {
return nil, fmt.Errorf("exceed maximum block range: %d", f.rangeLimit)
return nil, invalidParamsErr("exceed maximum block range %d", f.rangeLimit)
}
return f.rangeLogs(ctx, begin, end)
}

View file

@ -19,6 +19,7 @@ package filters
import (
"context"
"encoding/json"
"errors"
"math/big"
"strings"
"testing"
@ -634,7 +635,19 @@ func TestRangeLimit(t *testing.T) {
// Set rangeLimit to 5, but request a range of 9 (end - begin = 9, from 0 to 9)
filter := sys.NewRangeFilter(0, 9, nil, nil, 5)
_, err = filter.Logs(context.Background())
if err == nil || !strings.Contains(err.Error(), "exceed maximum block range") {
t.Fatalf("expected range limit error, got %v", err)
if err == nil {
t.Fatal("expected range limit error, got nil")
}
var re rpc.Error
if errors.As(err, &re) {
if re.ErrorCode() != -32602 {
t.Fatalf("expected error code -32602, got %d", re.ErrorCode())
}
if re.Error() != "exceed maximum block range 5" {
t.Fatalf("expected error message 'exceed maximum block range 5', got %q", re.Error())
}
} else {
t.Fatalf("expected rpc error, got %v", err)
}
}