mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
fixed merge conflict
This commit is contained in:
commit
a87383b3b0
3 changed files with 7 additions and 17 deletions
|
|
@ -887,12 +887,11 @@ func retesteth(ctx *cli.Context) error {
|
||||||
}
|
}
|
||||||
vhosts := splitAndTrim(ctx.GlobalString(utils.RPCVirtualHostsFlag.Name))
|
vhosts := splitAndTrim(ctx.GlobalString(utils.RPCVirtualHostsFlag.Name))
|
||||||
cors := splitAndTrim(ctx.GlobalString(utils.RPCCORSDomainFlag.Name))
|
cors := splitAndTrim(ctx.GlobalString(utils.RPCCORSDomainFlag.Name))
|
||||||
wsOrigins := splitAndTrim(ctx.GlobalString(utils.WSAllowedOriginsFlag.Value))
|
|
||||||
|
|
||||||
srv := rpc.NewServer()
|
srv := rpc.NewServer()
|
||||||
|
|
||||||
handler := node.NewHTTPHandlerStack(srv, cors, vhosts)
|
handler := node.NewHTTPHandlerStack(srv, cors, vhosts)
|
||||||
handler = node.NewWebsocketUpgradeHandler(handler, srv.WebsocketHandler(wsOrigins))
|
handler = node.NewWebsocketUpgradeHandler(handler, nil)
|
||||||
|
|
||||||
// start http server
|
// start http server
|
||||||
var RetestethHTTPTimeouts = rpc.HTTPTimeouts{
|
var RetestethHTTPTimeouts = rpc.HTTPTimeouts{
|
||||||
|
|
|
||||||
|
|
@ -378,7 +378,6 @@ func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors
|
||||||
if n.httpEndpoint == n.wsEndpoint {
|
if n.httpEndpoint == n.wsEndpoint {
|
||||||
ws = srv.WebsocketHandler(wsOrigins)
|
ws = srv.WebsocketHandler(wsOrigins)
|
||||||
}
|
}
|
||||||
|
|
||||||
// wrap handler in websocket handler only if websocket port is the same as http rpc
|
// wrap handler in websocket handler only if websocket port is the same as http rpc
|
||||||
handler := n.AddWebsocketHandler(NewHTTPHandlerStack(srv, cors, vhosts), ws)
|
handler := n.AddWebsocketHandler(NewHTTPHandlerStack(srv, cors, vhosts), ws)
|
||||||
|
|
||||||
|
|
@ -389,11 +388,9 @@ func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors
|
||||||
n.log.Info("HTTP endpoint opened", "url", fmt.Sprintf("http://%v/", listener.Addr()),
|
n.log.Info("HTTP endpoint opened", "url", fmt.Sprintf("http://%v/", listener.Addr()),
|
||||||
"cors", strings.Join(cors, ","),
|
"cors", strings.Join(cors, ","),
|
||||||
"vhosts", strings.Join(vhosts, ","))
|
"vhosts", strings.Join(vhosts, ","))
|
||||||
|
|
||||||
if n.httpEndpoint == n.wsEndpoint {
|
if n.httpEndpoint == n.wsEndpoint {
|
||||||
n.log.Info("WebSocket endpoint opened", "url", fmt.Sprintf("ws://%v", listener.Addr()))
|
n.log.Info("WebSocket endpoint opened", "url", fmt.Sprintf("ws://%v", listener.Addr()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// All listeners booted successfully
|
// All listeners booted successfully
|
||||||
n.httpEndpoint = endpoint
|
n.httpEndpoint = endpoint
|
||||||
n.httpListener = listener
|
n.httpListener = listener
|
||||||
|
|
@ -698,12 +695,14 @@ 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)
|
||||||
|
}
|
||||||
// Generate the whitelist based on the allowed modules
|
// Generate the whitelist based on the allowed modules
|
||||||
whitelist := make(map[string]bool)
|
whitelist := make(map[string]bool)
|
||||||
for _, module := range modules {
|
for _, module := range modules {
|
||||||
whitelist[module] = true
|
whitelist[module] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register all the APIs exposed by the services
|
// Register all the APIs exposed by the services
|
||||||
for _, api := range apis {
|
for _, api := range apis {
|
||||||
if whitelist[api.Namespace] || (len(whitelist) == 0 && api.Public) {
|
if whitelist[api.Namespace] || (len(whitelist) == 0 && api.Public) {
|
||||||
|
|
@ -713,6 +712,5 @@ func registerApisFromWhitelist(apis []rpc.API, modules []string, srv *rpc.Server
|
||||||
log.Debug("HTTP registered", "namespace", api.Namespace)
|
log.Debug("HTTP registered", "namespace", api.Namespace)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,10 +24,10 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// checkModuleAvailability checks that all names given in modules are actually
|
// CheckModuleAvailability checks that all names given in modules are actually
|
||||||
// available API services. It assumes that the MetadataApi module ("rpc") is always available;
|
// available API services. It assumes that the MetadataApi module ("rpc") is always available;
|
||||||
// the registration of this "rpc" module happens in NewServer() and is thus common to all endpoints.
|
// the registration of this "rpc" module happens in NewServer() and is thus common to all endpoints.
|
||||||
func checkModuleAvailability(modules []string, apis []API) (bad, available []string) {
|
func CheckModuleAvailability(modules []string, apis []API) (bad, available []string) {
|
||||||
availableSet := make(map[string]struct{})
|
availableSet := make(map[string]struct{})
|
||||||
for _, api := range apis {
|
for _, api := range apis {
|
||||||
if _, ok := availableSet[api.Namespace]; !ok {
|
if _, ok := availableSet[api.Namespace]; !ok {
|
||||||
|
|
@ -45,10 +45,6 @@ func checkModuleAvailability(modules []string, apis []API) (bad, available []str
|
||||||
|
|
||||||
// StartHTTPEndpoint starts the HTTP RPC endpoint, configured with cors/vhosts/modules.
|
// 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, apis []API, modules []string, timeouts HTTPTimeouts, handler http.Handler) (net.Listener, error) {
|
||||||
if bad, available := checkModuleAvailability(modules, apis); len(bad) > 0 {
|
|
||||||
log.Error("Unavailable modules in HTTP API list", "unavailable", bad, "available", available)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start the HTTP listener
|
// Start the HTTP listener
|
||||||
var (
|
var (
|
||||||
listener net.Listener
|
listener net.Listener
|
||||||
|
|
@ -57,7 +53,6 @@ func StartHTTPEndpoint(endpoint string, apis []API, modules []string, timeouts H
|
||||||
if listener, err = net.Listen("tcp", endpoint); err != nil {
|
if listener, err = net.Listen("tcp", endpoint); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure timeout values are meaningful
|
// Make sure timeout values are meaningful
|
||||||
if timeouts.ReadTimeout < time.Second {
|
if timeouts.ReadTimeout < time.Second {
|
||||||
log.Warn("Sanitizing invalid HTTP read timeout", "provided", timeouts.ReadTimeout, "updated", DefaultHTTPTimeouts.ReadTimeout)
|
log.Warn("Sanitizing invalid HTTP read timeout", "provided", timeouts.ReadTimeout, "updated", DefaultHTTPTimeouts.ReadTimeout)
|
||||||
|
|
@ -71,7 +66,6 @@ func StartHTTPEndpoint(endpoint string, apis []API, modules []string, timeouts H
|
||||||
log.Warn("Sanitizing invalid HTTP idle timeout", "provided", timeouts.IdleTimeout, "updated", DefaultHTTPTimeouts.IdleTimeout)
|
log.Warn("Sanitizing invalid HTTP idle timeout", "provided", timeouts.IdleTimeout, "updated", DefaultHTTPTimeouts.IdleTimeout)
|
||||||
timeouts.IdleTimeout = DefaultHTTPTimeouts.IdleTimeout
|
timeouts.IdleTimeout = DefaultHTTPTimeouts.IdleTimeout
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bundle and start the HTTP server
|
// Bundle and start the HTTP server
|
||||||
httpSrv := &http.Server{
|
httpSrv := &http.Server{
|
||||||
Handler: handler,
|
Handler: handler,
|
||||||
|
|
@ -79,14 +73,13 @@ func StartHTTPEndpoint(endpoint string, apis []API, modules []string, timeouts H
|
||||||
WriteTimeout: timeouts.WriteTimeout,
|
WriteTimeout: timeouts.WriteTimeout,
|
||||||
IdleTimeout: timeouts.IdleTimeout,
|
IdleTimeout: timeouts.IdleTimeout,
|
||||||
}
|
}
|
||||||
|
|
||||||
go httpSrv.Serve(listener)
|
go httpSrv.Serve(listener)
|
||||||
return listener, err
|
return listener, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// StartWSEndpoint starts a websocket endpoint.
|
// StartWSEndpoint starts a websocket endpoint.
|
||||||
func StartWSEndpoint(endpoint string, apis []API, modules []string, wsOrigins []string, exposeAll bool) (net.Listener, *Server, error) {
|
func StartWSEndpoint(endpoint string, apis []API, modules []string, wsOrigins []string, exposeAll bool) (net.Listener, *Server, error) {
|
||||||
if bad, available := checkModuleAvailability(modules, apis); len(bad) > 0 {
|
if bad, available := CheckModuleAvailability(modules, apis); len(bad) > 0 {
|
||||||
log.Error("Unavailable modules in WS API list", "unavailable", bad, "available", available)
|
log.Error("Unavailable modules in WS API list", "unavailable", bad, "available", available)
|
||||||
}
|
}
|
||||||
// Generate the whitelist based on the allowed modules
|
// Generate the whitelist based on the allowed modules
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue