aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rpc/args.go19
-rw-r--r--rpc/args_test.go6
2 files changed, 14 insertions, 11 deletions
diff --git a/rpc/args.go b/rpc/args.go
index b23216c98..206472aa2 100644
--- a/rpc/args.go
+++ b/rpc/args.go
@@ -424,17 +424,20 @@ func (args *BlockFilterArgs) UnmarshalJSON(b []byte) (err error) {
return NewInsufficientParamsError(len(obj), 1)
}
- fromstr, ok := obj[0].FromBlock.(string)
- if !ok {
- return NewInvalidTypeError("fromBlock", "is not a string")
+ var num int64
+ if err := blockHeight(obj[0].FromBlock, &num); err != nil {
+ return err
+ }
+ if num < 0 {
+ args.Earliest = -1 //latest block
+ } else {
+ args.Earliest = num
}
- switch fromstr {
- case "latest":
- args.Earliest = -1
- default:
- args.Earliest = int64(common.Big(obj[0].FromBlock.(string)).Int64())
+ if err := blockHeight(obj[0].ToBlock, &num); err != nil {
+ return err
}
+ args.Latest = num
tostr, ok := obj[0].ToBlock.(string)
if !ok {
diff --git a/rpc/args_test.go b/rpc/args_test.go
index 0c7360c53..2622891b9 100644
--- a/rpc/args_test.go
+++ b/rpc/args_test.go
@@ -759,10 +759,10 @@ func TestBlockFilterArgsWords(t *testing.T) {
}
}
-func TestBlockFilterArgsNums(t *testing.T) {
+func TestBlockFilterArgsBool(t *testing.T) {
input := `[{
- "fromBlock": 2,
- "toBlock": 3
+ "fromBlock": true,
+ "toBlock": false
}]`
args := new(BlockFilterArgs)