aboutsummaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
Diffstat (limited to 'rpc')
-rw-r--r--rpc/api.go15
-rw-r--r--rpc/http.go12
2 files changed, 12 insertions, 15 deletions
diff --git a/rpc/api.go b/rpc/api.go
index c3aa7186b..d6854bbab 100644
--- a/rpc/api.go
+++ b/rpc/api.go
@@ -9,7 +9,6 @@ For each request type, define the following:
package rpc
import (
- "fmt"
"math/big"
"path"
"strings"
@@ -24,7 +23,6 @@ import (
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/event/filter"
"github.com/ethereum/go-ethereum/state"
- "github.com/ethereum/go-ethereum/ui"
"github.com/ethereum/go-ethereum/xeth"
)
@@ -84,7 +82,7 @@ func (self *EthereumApi) setStateByBlockNumber(num int64) {
block = chain.GetBlockByNumber(uint64(num))
if block != nil {
- self.useState(state.New(block.Root(), self.xeth().Backend().Db()))
+ self.useState(state.New(block.Root(), self.xeth().Backend().StateDb()))
} else {
self.useState(chain.State())
}
@@ -702,14 +700,3 @@ func (self *EthereumApi) useState(statedb *state.StateDB) {
self.eth = self.eth.UseState(statedb)
}
-
-func t(f ui.Frontend) {
- // Call the password dialog
- ret, err := f.Call("PasswordDialog")
- if err != nil {
- fmt.Println(err)
- }
- // Get the first argument
- t, _ := ret.Get(0)
- fmt.Println("return:", t)
-}
diff --git a/rpc/http.go b/rpc/http.go
index 44e2ad6ab..857cf3221 100644
--- a/rpc/http.go
+++ b/rpc/http.go
@@ -9,10 +9,14 @@ import (
var rpchttplogger = logger.NewLogger("RPC-HTTP")
+const (
+ jsonrpcver = "2.0"
+ maxSizeReqLength = 1024 * 1024 // 1MB
+)
+
// JSONRPC returns a handler that implements the Ethereum JSON-RPC API.
func JSONRPC(pipe *xeth.XEth, dataDir string) http.Handler {
var json JsonWrapper
- const jsonrpcver = "2.0"
api := NewEthereumApi(pipe, dataDir)
return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
@@ -20,6 +24,12 @@ func JSONRPC(pipe *xeth.XEth, dataDir string) http.Handler {
rpchttplogger.DebugDetailln("Handling request")
+ if req.ContentLength > maxSizeReqLength {
+ jsonerr := &RpcErrorObject{-32700, "Error: Request too large"}
+ json.Send(w, &RpcErrorResponse{JsonRpc: jsonrpcver, ID: nil, Error: jsonerr})
+ return
+ }
+
reqParsed, reqerr := json.ParseRequestBody(req)
if reqerr != nil {
jsonerr := &RpcErrorObject{-32700, "Error: Could not parse request"}