rpc.StartHTTPServer listener bug fix
This commit is contained in:
parent
66ff985cd2
commit
d9bfe82d93
|
@ -19,7 +19,6 @@ import (
|
||||||
"github.com/tendermint/tendermint/binary"
|
"github.com/tendermint/tendermint/binary"
|
||||||
. "github.com/tendermint/tendermint/cmd/barak/types"
|
. "github.com/tendermint/tendermint/cmd/barak/types"
|
||||||
. "github.com/tendermint/tendermint/common"
|
. "github.com/tendermint/tendermint/common"
|
||||||
"github.com/tendermint/tendermint/p2p"
|
|
||||||
pcm "github.com/tendermint/tendermint/process"
|
pcm "github.com/tendermint/tendermint/process"
|
||||||
"github.com/tendermint/tendermint/rpc"
|
"github.com/tendermint/tendermint/rpc"
|
||||||
)
|
)
|
||||||
|
@ -99,25 +98,23 @@ func main() {
|
||||||
fmt.Printf("Barak: %v\n", barak)
|
fmt.Printf("Barak: %v\n", barak)
|
||||||
|
|
||||||
// Start rpc server.
|
// Start rpc server.
|
||||||
listener := p2p.NewDefaultListener("tcp", options.ListenAddress, false)
|
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
mux.HandleFunc("/download", ServeFile)
|
mux.HandleFunc("/download", ServeFile)
|
||||||
mux.HandleFunc("/register", Register)
|
mux.HandleFunc("/register", Register)
|
||||||
// TODO: mux.HandleFunc("/upload", UploadFile)
|
// TODO: mux.HandleFunc("/upload", UploadFile)
|
||||||
rpc.RegisterRPCFuncs(mux, Routes)
|
rpc.RegisterRPCFuncs(mux, Routes)
|
||||||
rpc.StartHTTPServer(listener, mux)
|
rpc.StartHTTPServer(options.ListenAddress, mux)
|
||||||
|
|
||||||
// Register this barak with central listener
|
// Register this barak with central listener
|
||||||
extAddress := listener.ExternalAddress().String()
|
|
||||||
for _, registry := range barak.registries {
|
for _, registry := range barak.registries {
|
||||||
go func(registry string) {
|
go func(registry string) {
|
||||||
var response ResponseRegister
|
resp, err := http.Get(registry + "/register")
|
||||||
_, err = rpc.Call(registry, "register", Arr(extAddress), &response)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error registering to registry %v:\n %v\n", registry, err)
|
fmt.Printf("Error registering to registry %v:\n %v\n", registry, err)
|
||||||
} else {
|
return
|
||||||
fmt.Printf("Successfully registered with registry %v\n", registry)
|
|
||||||
}
|
}
|
||||||
|
body, _ := ioutil.ReadAll(resp.Body)
|
||||||
|
fmt.Printf("Successfully registered with registry %v\n %v\n", registry, string(body))
|
||||||
}(registry)
|
}(registry)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -162,11 +162,10 @@ func (n *Node) StartRPC() {
|
||||||
core.SetSwitch(n.sw)
|
core.SetSwitch(n.sw)
|
||||||
|
|
||||||
listenAddr := config.App().GetString("RPC.HTTP.ListenAddr")
|
listenAddr := config.App().GetString("RPC.HTTP.ListenAddr")
|
||||||
listener := p2p.NewDefaultListener("tcp", listenAddr, false)
|
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
rpc.RegisterEventsHandler(mux, n.evsw)
|
rpc.RegisterEventsHandler(mux, n.evsw)
|
||||||
rpc.RegisterRPCFuncs(mux, core.Routes)
|
rpc.RegisterRPCFuncs(mux, core.Routes)
|
||||||
rpc.StartHTTPServer(listener, mux)
|
rpc.StartHTTPServer(listenAddr, mux)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *Node) Switch() *p2p.Switch {
|
func (n *Node) Switch() *p2p.Switch {
|
||||||
|
|
|
@ -137,6 +137,8 @@ func (l *DefaultListener) ExternalAddress() *NetAddress {
|
||||||
return l.extAddr
|
return l.extAddr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE: The returned listener is already Accept()'ing.
|
||||||
|
// So it's not suitable to pass into http.Serve().
|
||||||
func (l *DefaultListener) NetListener() net.Listener {
|
func (l *DefaultListener) NetListener() net.Listener {
|
||||||
return l.listener
|
return l.listener
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,11 +77,13 @@ func makeSwitchPair(t testing.TB, initSwitch func(*Switch) *Switch) (*Switch, *S
|
||||||
s1.SetNodeInfo(&types.NodeInfo{
|
s1.SetNodeInfo(&types.NodeInfo{
|
||||||
Moniker: "switch1",
|
Moniker: "switch1",
|
||||||
Network: "testing",
|
Network: "testing",
|
||||||
|
Version: "123.123.123",
|
||||||
})
|
})
|
||||||
s2 := initSwitch(NewSwitch())
|
s2 := initSwitch(NewSwitch())
|
||||||
s2.SetNodeInfo(&types.NodeInfo{
|
s2.SetNodeInfo(&types.NodeInfo{
|
||||||
Moniker: "switch2",
|
Moniker: "switch2",
|
||||||
Network: "testing",
|
Network: "testing",
|
||||||
|
Version: "123.123.123",
|
||||||
})
|
})
|
||||||
|
|
||||||
// Start switches
|
// Start switches
|
||||||
|
|
|
@ -13,17 +13,17 @@ import (
|
||||||
"github.com/tendermint/tendermint/alert"
|
"github.com/tendermint/tendermint/alert"
|
||||||
"github.com/tendermint/tendermint/binary"
|
"github.com/tendermint/tendermint/binary"
|
||||||
. "github.com/tendermint/tendermint/common"
|
. "github.com/tendermint/tendermint/common"
|
||||||
"github.com/tendermint/tendermint/p2p"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func StartHTTPServer(listener p2p.Listener, handler http.Handler) {
|
func StartHTTPServer(listenAddr string, handler http.Handler) {
|
||||||
log.Info(Fmt("Starting RPC HTTP server on ext:%v int:%v",
|
log.Info(Fmt("Starting RPC HTTP server on %v", listenAddr))
|
||||||
listener.ExternalAddress(),
|
|
||||||
listener.InternalAddress()))
|
|
||||||
go func() {
|
go func() {
|
||||||
netListener := listener.(*p2p.DefaultListener).NetListener()
|
listener, err := net.Listen("tcp", listenAddr)
|
||||||
|
if err != nil {
|
||||||
|
Exit(Fmt("Failed to listen to %v", listenAddr))
|
||||||
|
}
|
||||||
res := http.Serve(
|
res := http.Serve(
|
||||||
netListener,
|
listener,
|
||||||
RecoverAndLogHandler(handler),
|
RecoverAndLogHandler(handler),
|
||||||
)
|
)
|
||||||
log.Crit("RPC HTTP server stopped", "result", res)
|
log.Crit("RPC HTTP server stopped", "result", res)
|
||||||
|
|
|
@ -16,7 +16,6 @@ func testStatus(t *testing.T, typ string) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
fmt.Println(">>>", resp)
|
|
||||||
if resp.Network != config.App().GetString("Network") {
|
if resp.Network != config.App().GetString("Network") {
|
||||||
t.Fatal(fmt.Errorf("Network mismatch: got %s expected %s",
|
t.Fatal(fmt.Errorf("Network mismatch: got %s expected %s",
|
||||||
resp.Network, config.App().Get("Network")))
|
resp.Network, config.App().Get("Network")))
|
||||||
|
@ -29,7 +28,6 @@ func testGenPriv(t *testing.T, typ string) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
fmt.Println(">>>", resp)
|
|
||||||
if len(resp.PrivAccount.Address) == 0 {
|
if len(resp.PrivAccount.Address) == 0 {
|
||||||
t.Fatal("Failed to generate an address")
|
t.Fatal("Failed to generate an address")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue