rpc.StartHTTPServer listener bug fix

This commit is contained in:
Jae Kwon 2015-04-23 18:33:20 -07:00
parent 66ff985cd2
commit d9bfe82d93
6 changed files with 17 additions and 19 deletions

View File

@ -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)
} }

View File

@ -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 {

View File

@ -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
} }

View File

@ -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

View File

@ -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)

View File

@ -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")
} }