From 3de74d22134b9a8c8506568ad7aacc2935083dd9 Mon Sep 17 00:00:00 2001 From: renaynay <41963722+renaynay@users.noreply.github.com> Date: Wed, 25 Mar 2020 16:30:51 +0100 Subject: [PATCH] fixed some errors related to crashing travis build --- cmd/clef/main.go | 12 ++++++++++-- cmd/geth/retesteth.go | 7 ++++++- node/node.go | 9 ++++++--- rpc/endpoints.go | 2 +- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/cmd/clef/main.go b/cmd/clef/main.go index dd898871d5..1e09d707a8 100644 --- a/cmd/clef/main.go +++ b/cmd/clef/main.go @@ -539,9 +539,17 @@ func signer(c *cli.Context) error { vhosts := splitAndTrim(c.GlobalString(utils.RPCVirtualHostsFlag.Name)) cors := splitAndTrim(c.GlobalString(utils.RPCCORSDomainFlag.Name)) - // start http server + srv := rpc.NewServer() + + err := node.RegisterApisFromWhitelist(rpcAPI, []string{"account"}, srv) + if err != nil { + utils.Fatalf("Could not register API: %w", err) // TODO should this be a fatal failure? + } + + handler := node.NewHTTPHandlerStack(srv, cors, vhosts) httpEndpoint := fmt.Sprintf("%s:%d", c.GlobalString(utils.RPCListenAddrFlag.Name), c.Int(rpcPortFlag.Name)) - listener, _, err := rpc.StartHTTPEndpoint(httpEndpoint, rpcAPI, []string{"account"}, cors, vhosts, rpc.DefaultHTTPTimeouts) + // start http server + listener, err := rpc.StartHTTPEndpoint(httpEndpoint, rpc.DefaultHTTPTimeouts, handler) if err != nil { utils.Fatalf("Could not start RPC api: %v", err) } diff --git a/cmd/geth/retesteth.go b/cmd/geth/retesteth.go index a7721199d1..19410d8aa5 100644 --- a/cmd/geth/retesteth.go +++ b/cmd/geth/retesteth.go @@ -890,6 +890,11 @@ func retesteth(ctx *cli.Context) error { srv := rpc.NewServer() + err := node.RegisterApisFromWhitelist(rpcAPI, []string{"test", "eth", "debug", "web3"}, srv) + if err != nil { + utils.Fatalf("Could not register RPC apis: %w", err) // TODO should this be a fatal error? + } + handler := node.NewHTTPHandlerStack(srv, cors, vhosts) handler = node.NewWebsocketUpgradeHandler(handler, nil) @@ -900,7 +905,7 @@ func retesteth(ctx *cli.Context) error { IdleTimeout: 120 * time.Second, } httpEndpoint := fmt.Sprintf("%s:%d", ctx.GlobalString(utils.RPCListenAddrFlag.Name), ctx.Int(rpcPortFlag.Name)) - listener, err := rpc.StartHTTPEndpoint(httpEndpoint, rpcAPI, []string{"test", "eth", "debug", "web3"}, RetestethHTTPTimeouts, handler) + listener, err := rpc.StartHTTPEndpoint(httpEndpoint, RetestethHTTPTimeouts, handler) if err != nil { utils.Fatalf("Could not start RPC api: %v", err) } diff --git a/node/node.go b/node/node.go index a8e66a3b54..c44634fe0f 100644 --- a/node/node.go +++ b/node/node.go @@ -372,7 +372,10 @@ func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors srv := rpc.NewServer() - err := registerApisFromWhitelist(apis, modules, srv) + err := RegisterApisFromWhitelist(apis, modules, srv) + if err != nil { + return err // TODO this should return upon failure, right? + } var ws http.Handler if n.httpEndpoint == n.wsEndpoint { @@ -381,7 +384,7 @@ func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors // wrap handler in websocket handler only if websocket port is the same as http rpc handler := n.AddWebsocketHandler(NewHTTPHandlerStack(srv, cors, vhosts), ws) - listener, err := rpc.StartHTTPEndpoint(endpoint, apis, modules, timeouts, handler) + listener, err := rpc.StartHTTPEndpoint(endpoint, timeouts, handler) if err != nil { return err } @@ -694,7 +697,7 @@ func (n *Node) apis() []rpc.API { } } -func registerApisFromWhitelist(apis []rpc.API, modules []string, srv *rpc.Server) error { +func RegisterApisFromWhitelist(apis []rpc.API, modules []string, srv *rpc.Server) error { if bad, available := rpc.CheckModuleAvailability(modules, apis); len(bad) > 0 { log.Error("Unavailable modules in HTTP API list", "unavailable", bad, "available", available) } diff --git a/rpc/endpoints.go b/rpc/endpoints.go index e900c4e8a9..72e1a0b36b 100644 --- a/rpc/endpoints.go +++ b/rpc/endpoints.go @@ -44,7 +44,7 @@ func CheckModuleAvailability(modules []string, apis []API) (bad, available []str } // StartHTTPEndpoint starts the HTTP RPC endpoint, configured with cors/vhosts/modules. -func StartHTTPEndpoint(endpoint string, apis []API, modules []string, timeouts HTTPTimeouts, handler http.Handler) (net.Listener, error) { +func StartHTTPEndpoint(endpoint string, timeouts HTTPTimeouts, handler http.Handler) (net.Listener, error) { // Start the HTTP listener var ( listener net.Listener