浏览代码

Merge pull request #379 from tgerring/rpcupdates

RPC cleanup
Jeffrey Wilcke 10 年之前
父节点
当前提交
52ccaa605e
共有 6 个文件被更改,包括 127 次插入170 次删除
  1. 38 40
      rpc/api.go
  2. 0 0
      rpc/api_test.go
  3. 18 48
      rpc/args.go
  4. 1 1
      rpc/http/server.go
  5. 69 80
      rpc/messages.go
  6. 1 1
      rpc/ws/server.go

+ 38 - 40
rpc/packages.go → rpc/api.go

@@ -9,7 +9,6 @@ For each request type, define the following:
 package rpc
 
 import (
-	"fmt"
 	"math/big"
 	"strings"
 	"sync"
@@ -26,8 +25,9 @@ import (
 )
 
 var (
-	defaultGasPrice = big.NewInt(10000000000000)
-	defaultGas      = big.NewInt(10000)
+	defaultGasPrice  = big.NewInt(10000000000000)
+	defaultGas       = big.NewInt(10000)
+	filterTickerTime = 15 * time.Second
 )
 
 type EthereumApi struct {
@@ -63,6 +63,39 @@ func NewEthereumApi(eth *xeth.XEth) *EthereumApi {
 	return api
 }
 
+func (self *EthereumApi) start() {
+	timer := time.NewTicker(filterTickerTime)
+done:
+	for {
+		select {
+		case <-timer.C:
+			self.logMut.Lock()
+			self.messagesMut.Lock()
+			for id, filter := range self.logs {
+				if time.Since(filter.timeout) > 20*time.Second {
+					self.filterManager.UninstallFilter(id)
+					delete(self.logs, id)
+				}
+			}
+
+			for id, filter := range self.messages {
+				if time.Since(filter.timeout) > 20*time.Second {
+					self.xeth.Whisper().Unwatch(id)
+					delete(self.messages, id)
+				}
+			}
+			self.logMut.Unlock()
+			self.messagesMut.Unlock()
+		case <-self.quit:
+			break done
+		}
+	}
+}
+
+func (self *EthereumApi) stop() {
+	close(self.quit)
+}
+
 func (self *EthereumApi) Register(args string, reply *interface{}) error {
 	self.regmut.Lock()
 	defer self.regmut.Unlock()
@@ -410,7 +443,7 @@ func (p *EthereumApi) WhisperMessages(id int, reply *interface{}) error {
 }
 
 func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error {
-	// Spec at https://github.com/ethereum/wiki/wiki/Generic-ON-RPC
+	// Spec at https://github.com/ethereum/wiki/wiki/Generic-JSON-RPC
 	rpclogger.DebugDetailf("%T %s", req.Params, req.Params)
 	switch req.Method {
 	case "eth_coinbase":
@@ -595,44 +628,9 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
 		}
 		return p.WhisperMessages(args, reply)
 	default:
-		return NewErrorResponse(fmt.Sprintf("%v %s", ErrorNotImplemented, req.Method))
+		return NewErrorWithMessage(errNotImplemented, req.Method)
 	}
 
 	rpclogger.DebugDetailf("Reply: %T %s", reply, reply)
 	return nil
 }
-
-var filterTickerTime = 15 * time.Second
-
-func (self *EthereumApi) start() {
-	timer := time.NewTicker(filterTickerTime)
-done:
-	for {
-		select {
-		case <-timer.C:
-			self.logMut.Lock()
-			self.messagesMut.Lock()
-			for id, filter := range self.logs {
-				if time.Since(filter.timeout) > 20*time.Second {
-					self.filterManager.UninstallFilter(id)
-					delete(self.logs, id)
-				}
-			}
-
-			for id, filter := range self.messages {
-				if time.Since(filter.timeout) > 20*time.Second {
-					self.xeth.Whisper().Unwatch(id)
-					delete(self.messages, id)
-				}
-			}
-			self.logMut.Unlock()
-			self.messagesMut.Unlock()
-		case <-self.quit:
-			break done
-		}
-	}
-}
-
-func (self *EthereumApi) stop() {
-	close(self.quit)
-}

+ 0 - 0
rpc/packages_test.go → rpc/api_test.go


+ 18 - 48
rpc/args.go

@@ -19,7 +19,7 @@ func (obj *GetBlockArgs) UnmarshalJSON(b []byte) (err error) {
 		obj.Hash = argstr
 		return
 	}
-	return NewErrorResponse(ErrorDecodeArgs)
+	return errDecodeArgs
 }
 
 type NewTxArgs struct {
@@ -57,7 +57,7 @@ func (obj *NewTxArgs) UnmarshalJSON(b []byte) (err error) {
 		return
 	}
 
-	return NewErrorResponse(ErrorDecodeArgs)
+	return errDecodeArgs
 }
 
 type PushTxArgs struct {
@@ -70,12 +70,12 @@ func (obj *PushTxArgs) UnmarshalJSON(b []byte) (err error) {
 		obj.Tx = arg0
 		return
 	}
-	return NewErrorResponse(ErrorDecodeArgs)
+	return errDecodeArgs
 }
 
 func (a *PushTxArgs) requirementsPushTx() error {
 	if a.Tx == "" {
-		return NewErrorResponse("PushTx requires a 'tx' as argument")
+		return NewErrorWithMessage(errArguments, "PushTx requires a 'tx' as argument")
 	}
 	return nil
 }
@@ -86,14 +86,14 @@ type GetStorageArgs struct {
 
 func (obj *GetStorageArgs) UnmarshalJSON(b []byte) (err error) {
 	if err = json.Unmarshal(b, &obj.Address); err != nil {
-		return NewErrorResponse(ErrorDecodeArgs)
+		return errDecodeArgs
 	}
 	return
 }
 
 func (a *GetStorageArgs) requirements() error {
 	if len(a.Address) == 0 {
-		return NewErrorResponse("GetStorageAt requires an 'address' value as argument")
+		return NewErrorWithMessage(errArguments, "GetStorageAt requires an 'address' value as argument")
 	}
 	return nil
 }
@@ -109,64 +109,39 @@ func (obj *GetStateArgs) UnmarshalJSON(b []byte) (err error) {
 		obj.Address = arg0
 		return
 	}
-	return NewErrorResponse(ErrorDecodeArgs)
+	return errDecodeArgs
 }
 
 func (a *GetStateArgs) requirements() error {
 	if a.Address == "" {
-		return NewErrorResponse("GetStorageAt requires an 'address' value as argument")
+		return NewErrorWithMessage(errArguments, "GetStorageAt requires an 'address' value as argument")
 	}
 	if a.Key == "" {
-		return NewErrorResponse("GetStorageAt requires an 'key' value as argument")
+		return NewErrorWithMessage(errArguments, "GetStorageAt requires an 'key' value as argument")
 	}
 	return nil
 }
 
-type GetStorageAtRes struct {
-	Key   string `json:"key"`
-	Value string `json:"value"`
-}
-
 type GetTxCountArgs struct {
 	Address string `json:"address"`
 }
 
-// type GetTxCountRes struct {
-//  Nonce int `json:"nonce"`
-// }
-
 func (obj *GetTxCountArgs) UnmarshalJSON(b []byte) (err error) {
 	arg0 := ""
 	if err = json.Unmarshal(b, &arg0); err == nil {
 		obj.Address = arg0
 		return
 	}
-	return NewErrorResponse("Could not determine JSON parameters")
+	return errDecodeArgs
 }
 
 func (a *GetTxCountArgs) requirements() error {
 	if a.Address == "" {
-		return NewErrorResponse("GetTxCountAt requires an 'address' value as argument")
+		return NewErrorWithMessage(errArguments, "GetTxCountAt requires an 'address' value as argument")
 	}
 	return nil
 }
 
-// type GetPeerCountRes struct {
-//  PeerCount int `json:"peerCount"`
-// }
-
-// type GetListeningRes struct {
-//  IsListening bool `json:"isListening"`
-// }
-
-// type GetCoinbaseRes struct {
-//  Coinbase string `json:"coinbase"`
-// }
-
-// type GetMiningRes struct {
-//  IsMining bool `json:"isMining"`
-// }
-
 type GetBalanceArgs struct {
 	Address string
 }
@@ -177,21 +152,16 @@ func (obj *GetBalanceArgs) UnmarshalJSON(b []byte) (err error) {
 		obj.Address = arg0
 		return
 	}
-	return NewErrorResponse("Could not determine JSON parameters")
+	return errDecodeArgs
 }
 
 func (a *GetBalanceArgs) requirements() error {
 	if a.Address == "" {
-		return NewErrorResponse("GetBalanceAt requires an 'address' value as argument")
+		return NewErrorWithMessage(errArguments, "GetBalanceAt requires an 'address' value as argument")
 	}
 	return nil
 }
 
-type BalanceRes struct {
-	Balance string `json:"balance"`
-	Address string `json:"address"`
-}
-
 type GetCodeAtArgs struct {
 	Address string
 }
@@ -202,12 +172,12 @@ func (obj *GetCodeAtArgs) UnmarshalJSON(b []byte) (err error) {
 		obj.Address = arg0
 		return
 	}
-	return NewErrorResponse(ErrorDecodeArgs)
+	return errDecodeArgs
 }
 
 func (a *GetCodeAtArgs) requirements() error {
 	if a.Address == "" {
-		return NewErrorResponse("GetCodeAt requires an 'address' value as argument")
+		return NewErrorWithMessage(errArguments, "GetCodeAt requires an 'address' value as argument")
 	}
 	return nil
 }
@@ -218,7 +188,7 @@ type Sha3Args struct {
 
 func (obj *Sha3Args) UnmarshalJSON(b []byte) (err error) {
 	if err = json.Unmarshal(b, &obj.Data); err != nil {
-		return NewErrorResponse(ErrorDecodeArgs)
+		return errDecodeArgs
 	}
 	return
 }
@@ -270,10 +240,10 @@ type DbArgs struct {
 
 func (a *DbArgs) requirements() error {
 	if len(a.Database) == 0 {
-		return NewErrorResponse("DbPutArgs requires an 'Database' value as argument")
+		return NewErrorWithMessage(errArguments, "DbPutArgs requires an 'Database' value as argument")
 	}
 	if len(a.Key) == 0 {
-		return NewErrorResponse("DbPutArgs requires an 'Key' value as argument")
+		return NewErrorWithMessage(errArguments, "DbPutArgs requires an 'Key' value as argument")
 	}
 	return nil
 }

+ 1 - 1
rpc/http/server.go

@@ -92,7 +92,7 @@ func (s *RpcHttpServer) apiHandler(api *rpc.EthereumApi) http.Handler {
 
 		reqParsed, reqerr := JSON.ParseRequestBody(req)
 		if reqerr != nil {
-			jsonerr := &rpc.RpcErrorObject{-32700, rpc.ErrorParseRequest}
+			jsonerr := &rpc.RpcErrorObject{-32700, "Error: Could not parse request"}
 			JSON.Send(w, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: nil, Error: jsonerr})
 			return
 		}

+ 69 - 80
rpc/message.go → rpc/messages.go

@@ -25,12 +25,11 @@ import (
 	"github.com/ethereum/go-ethereum/xeth"
 )
 
-const (
-	ErrorArguments      = "Error: Insufficient arguments"
-	ErrorNotImplemented = "Error: Method not implemented"
-	ErrorUnknown        = "Error: Unknown error"
-	ErrorParseRequest   = "Error: Could not parse request"
-	ErrorDecodeArgs     = "Error: Could not decode arguments"
+var (
+	errArguments      = errors.New("Error: Insufficient arguments")
+	errNotImplemented = errors.New("Error: Method not implemented")
+	errUnknown        = errors.New("Error: Unknown error")
+	errDecodeArgs     = errors.New("Error: Could not decode arguments")
 )
 
 type RpcRequest struct {
@@ -58,76 +57,72 @@ type RpcErrorObject struct {
 	// Data    interface{} `json:"data"`
 }
 
-func NewErrorResponse(msg string) error {
-	return errors.New(msg)
-}
-
-func NewErrorResponseWithError(msg string, err error) error {
-	return fmt.Errorf("%s: %v", msg, err)
+func NewErrorWithMessage(err error, msg string) error {
+	return fmt.Errorf("%s: %s", err.Error(), msg)
 }
 
 func (req *RpcRequest) ToSha3Args() (*Sha3Args, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	args := new(Sha3Args)
 	r := bytes.NewReader(req.Params[0])
 	if err := json.NewDecoder(r).Decode(args); err != nil {
-		return nil, NewErrorResponse(ErrorDecodeArgs)
+		return nil, errDecodeArgs
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }
 
 func (req *RpcRequest) ToGetBlockArgs() (*GetBlockArgs, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	args := new(GetBlockArgs)
 	r := bytes.NewReader(req.Params[0])
 	err := json.NewDecoder(r).Decode(args)
 	if err != nil {
-		return nil, NewErrorResponse(ErrorDecodeArgs)
+		return nil, errDecodeArgs
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }
 
 func (req *RpcRequest) ToNewTxArgs() (*NewTxArgs, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	args := new(NewTxArgs)
 	r := bytes.NewReader(req.Params[0])
 	err := json.NewDecoder(r).Decode(args)
 	if err != nil {
-		return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
+		return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }
 
 func (req *RpcRequest) ToPushTxArgs() (*PushTxArgs, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	args := new(PushTxArgs)
 	r := bytes.NewReader(req.Params[0])
 	err := json.NewDecoder(r).Decode(args)
 	if err != nil {
-		return nil, NewErrorResponse(ErrorDecodeArgs)
+		return nil, errDecodeArgs
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }
 
 func (req *RpcRequest) ToGetStateArgs() (*GetStateArgs, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	args := new(GetStateArgs)
@@ -135,234 +130,228 @@ func (req *RpcRequest) ToGetStateArgs() (*GetStateArgs, error) {
 	r := bytes.NewReader(req.Params[0])
 	err := json.NewDecoder(r).Decode(args)
 	if err != nil {
-		return nil, NewErrorResponse(ErrorDecodeArgs)
+		return nil, errDecodeArgs
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }
 
 func (req *RpcRequest) ToStorageAtArgs() (*GetStorageArgs, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	args := new(GetStorageArgs)
 	r := bytes.NewReader(req.Params[0])
 	err := json.NewDecoder(r).Decode(args)
 	if err != nil {
-		return nil, NewErrorResponse(ErrorDecodeArgs)
+		return nil, errDecodeArgs
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }
 
 func (req *RpcRequest) ToGetTxCountArgs() (*GetTxCountArgs, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	args := new(GetTxCountArgs)
 	r := bytes.NewReader(req.Params[0])
 	err := json.NewDecoder(r).Decode(args)
 	if err != nil {
-		return nil, NewErrorResponse(ErrorDecodeArgs)
+		return nil, errDecodeArgs
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }
 
 func (req *RpcRequest) ToGetBalanceArgs() (*GetBalanceArgs, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	args := new(GetBalanceArgs)
 	r := bytes.NewReader(req.Params[0])
 	err := json.NewDecoder(r).Decode(args)
 	if err != nil {
-		return nil, NewErrorResponse(ErrorDecodeArgs)
+		return nil, errDecodeArgs
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }
 
 func (req *RpcRequest) ToGetCodeAtArgs() (*GetCodeAtArgs, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	args := new(GetCodeAtArgs)
 	r := bytes.NewReader(req.Params[0])
 	err := json.NewDecoder(r).Decode(args)
 	if err != nil {
-		return nil, NewErrorResponse(ErrorDecodeArgs)
+		return nil, errDecodeArgs
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }
 
 func (req *RpcRequest) ToBoolArgs() (bool, error) {
 	if len(req.Params) < 1 {
-		return false, NewErrorResponse(ErrorArguments)
+		return false, errArguments
 	}
 
 	var args bool
 	err := json.Unmarshal(req.Params[0], &args)
 	if err != nil {
-		return false, NewErrorResponse(ErrorDecodeArgs)
+		return false, errDecodeArgs
 	}
 
-	rpclogger.DebugDetailf("%T %v", args, args)
 	return args, nil
 }
 
 func (req *RpcRequest) ToCompileArgs() (string, error) {
 	if len(req.Params) < 1 {
-		return "", NewErrorResponse(ErrorArguments)
+		return "", errArguments
 	}
 
 	var args string
 	err := json.Unmarshal(req.Params[0], &args)
 	if err != nil {
-		return "", NewErrorResponse(ErrorDecodeArgs)
+		return "", errDecodeArgs
 	}
 
-	rpclogger.DebugDetailf("%T %v", args, args)
 	return args, nil
 }
 
 func (req *RpcRequest) ToFilterArgs() (*FilterOptions, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	args := new(FilterOptions)
 	r := bytes.NewReader(req.Params[0])
 	err := json.NewDecoder(r).Decode(args)
 	if err != nil {
-		return nil, NewErrorResponse(ErrorDecodeArgs)
+		return nil, errDecodeArgs
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
 	return args, nil
 }
 
 func (req *RpcRequest) ToFilterStringArgs() (string, error) {
 	if len(req.Params) < 1 {
-		return "", NewErrorResponse(ErrorArguments)
+		return "", errArguments
 	}
 
 	var args string
 	err := json.Unmarshal(req.Params[0], &args)
 	if err != nil {
-		return "", NewErrorResponse(ErrorDecodeArgs)
+		return "", errDecodeArgs
 	}
 
-	rpclogger.DebugDetailf("%T %v", args, args)
 	return args, nil
 }
 
 func (req *RpcRequest) ToUninstallFilterArgs() (int, error) {
 	if len(req.Params) < 1 {
-		return 0, NewErrorResponse(ErrorArguments)
+		return 0, errArguments
 	}
 
 	var args int
 	err := json.Unmarshal(req.Params[0], &args)
 	if err != nil {
-		return 0, NewErrorResponse(ErrorDecodeArgs)
+		return 0, errDecodeArgs
 	}
 
-	rpclogger.DebugDetailf("%T %v", args, args)
 	return args, nil
 }
 
 func (req *RpcRequest) ToFilterChangedArgs() (int, error) {
 	if len(req.Params) < 1 {
-		return 0, NewErrorResponse(ErrorArguments)
+		return 0, errArguments
 	}
 
 	var id int
 	r := bytes.NewReader(req.Params[0])
 	err := json.NewDecoder(r).Decode(&id)
 	if err != nil {
-		return 0, NewErrorResponse(ErrorDecodeArgs)
+		return 0, errDecodeArgs
 	}
-	rpclogger.DebugDetailf("%T %v", id, id)
 	return id, nil
 }
 
 func (req *RpcRequest) ToDbPutArgs() (*DbArgs, error) {
 	if len(req.Params) < 3 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	var args DbArgs
 	err := json.Unmarshal(req.Params[0], &args.Database)
 	if err != nil {
-		return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
+		return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
 	}
 	err = json.Unmarshal(req.Params[1], &args.Key)
 	if err != nil {
-		return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
+		return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
 	}
 	err = json.Unmarshal(req.Params[2], &args.Value)
 	if err != nil {
-		return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
+		return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return &args, nil
 }
 
 func (req *RpcRequest) ToDbGetArgs() (*DbArgs, error) {
 	if len(req.Params) < 2 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	var args DbArgs
 	err := json.Unmarshal(req.Params[0], &args.Database)
 	if err != nil {
-		return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
+		return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
 	}
 
 	err = json.Unmarshal(req.Params[1], &args.Key)
 	if err != nil {
-		return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
+		return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return &args, nil
 }
 
 func (req *RpcRequest) ToWhisperFilterArgs() (*xeth.Options, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	var args xeth.Options
 	err := json.Unmarshal(req.Params[0], &args)
 	if err != nil {
-		return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
+		return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return &args, nil
 }
 
 func (req *RpcRequest) ToIdArgs() (int, error) {
 	if len(req.Params) < 1 {
-		return 0, NewErrorResponse(ErrorArguments)
+		return 0, errArguments
 	}
 
 	var id int
 	err := json.Unmarshal(req.Params[0], &id)
 	if err != nil {
-		return 0, NewErrorResponse(ErrorDecodeArgs)
+		return 0, errDecodeArgs
 	}
-	rpclogger.DebugDetailf("%T %v", id, id)
+
 	return id, nil
 }
 
 func (req *RpcRequest) ToWhisperPostArgs() (*WhisperMessageArgs, error) {
 	if len(req.Params) < 1 {
-		return nil, NewErrorResponse(ErrorArguments)
+		return nil, errArguments
 	}
 
 	var args WhisperMessageArgs
@@ -370,13 +359,13 @@ func (req *RpcRequest) ToWhisperPostArgs() (*WhisperMessageArgs, error) {
 	if err != nil {
 		return nil, err
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return &args, nil
 }
 
 func (req *RpcRequest) ToWhisperHasIdentityArgs() (string, error) {
 	if len(req.Params) < 1 {
-		return "", NewErrorResponse(ErrorArguments)
+		return "", errArguments
 	}
 
 	var args string
@@ -384,13 +373,13 @@ func (req *RpcRequest) ToWhisperHasIdentityArgs() (string, error) {
 	if err != nil {
 		return "", err
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }
 
 func (req *RpcRequest) ToRegisterArgs() (string, error) {
 	if len(req.Params) < 1 {
-		return "", NewErrorResponse(ErrorArguments)
+		return "", errArguments
 	}
 
 	var args string
@@ -398,13 +387,13 @@ func (req *RpcRequest) ToRegisterArgs() (string, error) {
 	if err != nil {
 		return "", err
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }
 
 func (req *RpcRequest) ToWatchTxArgs() (string, error) {
 	if len(req.Params) < 1 {
-		return "", NewErrorResponse(ErrorArguments)
+		return "", errArguments
 	}
 
 	var args string
@@ -412,6 +401,6 @@ func (req *RpcRequest) ToWatchTxArgs() (string, error) {
 	if err != nil {
 		return "", err
 	}
-	rpclogger.DebugDetailf("%T %v", args, args)
+
 	return args, nil
 }

+ 1 - 1
rpc/ws/server.go

@@ -99,7 +99,7 @@ func sockHandler(api *rpc.EthereumApi) websocket.Handler {
 
 			// reqParsed, reqerr := JSON.ParseRequestBody(conn.Request())
 			if err := websocket.JSON.Receive(conn, &reqParsed); err != nil {
-				jsonerr := &rpc.RpcErrorObject{-32700, rpc.ErrorParseRequest}
+				jsonerr := &rpc.RpcErrorObject{-32700, "Error: Could not parse request"}
 				JSON.Send(conn, &rpc.RpcErrorResponse{JsonRpc: jsonrpcver, ID: nil, Error: jsonerr})
 				continue
 			}