Decouple StartHTTP{,AndTLS}Server from Listen() (#2791)

* Decouple StartHTTP{,AndTLS}Server from Listen()

This should help solve cosmos/cosmos-sdk#2715

* Fix small mistake

* Update StartGRPCServer

* s/rpc/rpcserver/

* Start grpccore.StartGRPCServer in a goroutine

* Reinstate l.Close()

* Fix rpc/lib/test/main.go

* Update code comment

* update changelog and comments

* fix tm-monitor. more comments
This commit is contained in:
Alessio Treglia
2018-11-15 20:33:04 +00:00
committed by Ethan Buchman
parent be8c2d5018
commit b646437ec7
11 changed files with 126 additions and 151 deletions

View File

@ -2,6 +2,7 @@ package main
import (
"errors"
"net"
"net/http"
"github.com/tendermint/tendermint/libs/log"
@ -9,16 +10,19 @@ import (
monitor "github.com/tendermint/tendermint/tools/tm-monitor/monitor"
)
func startRPC(listenAddr string, m *monitor.Monitor, logger log.Logger) {
func startRPC(listenAddr string, m *monitor.Monitor, logger log.Logger) net.Listener {
routes := routes(m)
mux := http.NewServeMux()
wm := rpc.NewWebsocketManager(routes, nil)
mux.HandleFunc("/websocket", wm.WebsocketHandler)
rpc.RegisterRPCFuncs(mux, routes, cdc, logger)
if _, err := rpc.StartHTTPServer(listenAddr, mux, logger, rpc.Config{}); err != nil {
listener, err := rpc.Listen(listenAddr, rpc.Config{})
if err != nil {
panic(err)
}
go rpc.StartHTTPServer(listener, mux, logger)
return listener
}
func routes(m *monitor.Monitor) map[string]*rpc.RPCFunc {