From 537e2cfeb64a14d9c54d5ae69e02a866b5117bd3 Mon Sep 17 00:00:00 2001
From: Taylor Gerring <taylor.gerring@gmail.com>
Date: Thu, 2 Apr 2015 16:12:19 +0200
Subject: [PATCH] Return nil when requested uncle index is not valid

---
 rpc/api.go | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/rpc/api.go b/rpc/api.go
index 4ce2a98e2..872290eef 100644
--- a/rpc/api.go
+++ b/rpc/api.go
@@ -253,13 +253,13 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
 		}
 
 		if args.Index >= int64(len(br.Uncles)) || args.Index < 0 {
-			return NewValidationError("Index", "does not exist")
+			// return NewValidationError("Index", "does not exist")
+			*reply = nil
+		} else {
+			uhash := br.Uncles[args.Index]
+			uncle := NewBlockRes(api.xeth().EthBlockByHash(uhash.String()), true)
+			*reply = uncle
 		}
-
-		uhash := br.Uncles[args.Index]
-		uncle := NewBlockRes(api.xeth().EthBlockByHash(uhash.String()), false)
-
-		*reply = uncle
 	case "eth_getUncleByBlockNumberAndIndex":
 		args := new(BlockNumIndexArgs)
 		if err := json.Unmarshal(req.Params, &args); err != nil {
@@ -275,13 +275,13 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
 		}
 
 		if args.Index >= int64(len(v.Uncles)) || args.Index < 0 {
-			return NewValidationError("Index", "does not exist")
+			// return NewValidationError("Index", "does not exist")
+			*reply = nil
+		} else {
+			uhash := v.Uncles[args.Index]
+			uncle := NewBlockRes(api.xeth().EthBlockByHash(uhash.String()), false)
+			*reply = uncle
 		}
-
-		uhash := v.Uncles[args.Index]
-		uncle := NewBlockRes(api.xeth().EthBlockByHash(uhash.String()), false)
-
-		*reply = uncle
 	case "eth_getCompilers":
 		c := []string{""}
 		*reply = c
-- 
GitLab