diff --git a/inspect/rpc/rpc.go b/inspect/rpc/rpc.go index b4cfec1e8..51559b410 100644 --- a/inspect/rpc/rpc.go +++ b/inspect/rpc/rpc.go @@ -89,7 +89,7 @@ func addCORSHandler(rpcConfig *config.RPCConfig, h http.Handler) http.Handler { // ListenAndServe listens on the address specified in srv.Addr and handles any // incoming requests over HTTP using the Inspect rpc handler specified on the server. func (srv *Server) ListenAndServe(ctx context.Context) error { - listener, err := rpcserver.Listen(r.Addr, r.Config.MaxOpenConnections) + listener, err := rpcserver.Listen(srv.Addr, srv.Config.MaxOpenConnections) if err != nil { return err } @@ -97,13 +97,13 @@ func (srv *Server) ListenAndServe(ctx context.Context) error { <-ctx.Done() listener.Close() }() - return rpcserver.Serve(listener, r.Handler, r.Logger, serverRPCConfig(r.Config)) + return rpcservesrv.Serve(listener, srv.Handler, srv.Logger, serverRPCConfig(srv.Config)) } // ListenAndServeTLS listens on the address specified in srv.Addr. ListenAndServeTLS handles // incoming requests over HTTPS using the Inspect rpc handler specified on the server. func (srv *Server) ListenAndServeTLS(ctx context.Context, certFile, keyFile string) error { - listener, err := rpcserver.Listen(r.Addr, r.Config.MaxOpenConnections) + listener, err := rpcserver.Listen(srv.Addr, srv.Config.MaxOpenConnections) if err != nil { return err } @@ -111,7 +111,7 @@ func (srv *Server) ListenAndServeTLS(ctx context.Context, certFile, keyFile stri <-ctx.Done() listener.Close() }() - return rpcserver.ServeTLS(listener, r.Handler, certFile, keyFile, r.Logger, serverRPCConfig(r.Config)) + return rpcserver.ServeTLS(listener, srv.Handler, certFile, keyFile, srv.Logger, serverRPCConfig(srv.Config)) } func serverRPCConfig(r *config.RPCConfig) *server.Config { diff --git a/rpc/core/routes.go b/rpc/core/routes.go index 18afb7bf6..1eb50fe4e 100644 --- a/rpc/core/routes.go +++ b/rpc/core/routes.go @@ -10,16 +10,13 @@ type RoutesMap map[string]*rpc.RPCFunc // Routes is a map of available routes. func (env *Environment) GetRoutes() RoutesMap { - return CombineRoutes(env.InfoRoutes(), - env.SubscribeRoutes(), - env.BroadcastTxRoutes(), - env.ABCIQueryRoutes(), - env.EvidenceRoutes(), - ) -} - -func (env *Environment) InfoRoutes() RoutesMap { return RoutesMap{ + // subscribe/unsubscribe are reserved for websocket events. + "subscribe": rpc.NewWSRPCFunc(env.Subscribe, "query"), + "unsubscribe": rpc.NewWSRPCFunc(env.Unsubscribe, "query"), + "unsubscribe_all": rpc.NewWSRPCFunc(env.UnsubscribeAll, ""), + + // info API "health": rpc.NewRPCFunc(env.Health, "", false), "status": rpc.NewRPCFunc(env.Status, "", false), "net_info": rpc.NewRPCFunc(env.NetInfo, "", false), @@ -40,59 +37,25 @@ func (env *Environment) InfoRoutes() RoutesMap { "consensus_params": rpc.NewRPCFunc(env.ConsensusParams, "height", true), "unconfirmed_txs": rpc.NewRPCFunc(env.UnconfirmedTxs, "limit", false), "num_unconfirmed_txs": rpc.NewRPCFunc(env.NumUnconfirmedTxs, "", false), - } -} -func (env *Environment) SubscribeRoutes() RoutesMap { - return RoutesMap{ - // subscribe/unsubscribe are reserved for websocket events. - "subscribe": rpc.NewWSRPCFunc(env.Subscribe, "query"), - "unsubscribe": rpc.NewWSRPCFunc(env.Unsubscribe, "query"), - "unsubscribe_all": rpc.NewWSRPCFunc(env.UnsubscribeAll, ""), - } -} - -func (env *Environment) BroadcastTxRoutes() RoutesMap { - // tx broadcast API - return RoutesMap{ + // tx broadcast API "broadcast_tx_commit": rpc.NewRPCFunc(env.BroadcastTxCommit, "tx", false), "broadcast_tx_sync": rpc.NewRPCFunc(env.BroadcastTxSync, "tx", false), "broadcast_tx_async": rpc.NewRPCFunc(env.BroadcastTxAsync, "tx", false), - } -} -func (env *Environment) EvidenceRoutes() RoutesMap { - // evidence API - return RoutesMap{ + // abci API + "abci_query": rpc.NewRPCFunc(env.ABCIQuery, "path,data,height,prove", false), + "abci_info": rpc.NewRPCFunc(env.ABCIInfo, "", true), + + // evidence API "broadcast_evidence": rpc.NewRPCFunc(env.BroadcastEvidence, "evidence", false), } } -func (env *Environment) ABCIQueryRoutes() RoutesMap { - // abci API - return RoutesMap{ - "abci_query": rpc.NewRPCFunc(env.ABCIQuery, "path,data,height,prove", false), - "abci_info": rpc.NewRPCFunc(env.ABCIInfo, "", true), - } -} - // AddUnsafeRoutes adds unsafe routes. -func (env *Environment) UnsafeRoutes() RoutesMap { +func (env *Environment) AddUnsafe(routes RoutesMap) { // control API - return RoutesMap{ - "dial_seeds": rpc.NewRPCFunc(env.UnsafeDialSeeds, "seeds", false), - "dial_peers": rpc.NewRPCFunc(env.UnsafeDialPeers, "peers,persistent,unconditional,private", false), - "unsafe_flush_mempool": rpc.NewRPCFunc(env.UnsafeFlushMempool, "", false), - } -} - -// CombineRoutes takes a list of RoutesMaps and combines them into a single RoutesMap. -func CombineRoutes(routesMaps ...RoutesMap) RoutesMap { - res := RoutesMap{} - for _, routesMap := range routesMaps { - for path, rpcFunc := range routesMap { - res[path] = rpcFunc - } - } - return res + routes["dial_seeds"] = rpc.NewRPCFunc(env.UnsafeDialSeeds, "seeds", false) + routes["dial_peers"] = rpc.NewRPCFunc(env.UnsafeDialPeers, "peers,persistent,unconditional,private", false) + routes["unsafe_flush_mempool"] = rpc.NewRPCFunc(env.UnsafeFlushMempool, "", false) } diff --git a/rpc/jsonrpc/server/http_server.go b/rpc/jsonrpc/server/http_server.go index c21c71c49..549671241 100644 --- a/rpc/jsonrpc/server/http_server.go +++ b/rpc/jsonrpc/server/http_server.go @@ -261,7 +261,7 @@ func (h maxBytesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // Listen starts a new net.Listener on the given address. // It returns an error if the address is invalid or the call to Listen() fails. -func Listen(addr string, config *Config) (listener net.Listener, err error) { +func Listen(addr string, maxOpenConnections int) (listener net.Listener, err error) { parts := strings.SplitN(addr, "://", 2) if len(parts) != 2 { return nil, fmt.Errorf( @@ -274,8 +274,8 @@ func Listen(addr string, config *Config) (listener net.Listener, err error) { if err != nil { return nil, fmt.Errorf("failed to listen on %v: %v", addr, err) } - if config.MaxOpenConnections > 0 { - listener = netutil.LimitListener(listener, config.MaxOpenConnections) + if maxOpenConnections > 0 { + listener = netutil.LimitListener(listener, maxOpenConnections) } return listener, nil