From a782a1a7d15ed8b3f2a91c086cfc47cf7a39e8d3 Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Mon, 22 Sep 2014 16:35:00 -0700 Subject: [PATCH] etcd: manually construct listeners --- main.go | 22 +++++++++++++++++++--- transport/listener.go | 9 +++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 transport/listener.go diff --git a/main.go b/main.go index c59b40f7b..5e2f6070e 100644 --- a/main.go +++ b/main.go @@ -19,6 +19,7 @@ import ( "github.com/coreos/etcd/raft" "github.com/coreos/etcd/snap" "github.com/coreos/etcd/store" + "github.com/coreos/etcd/transport" "github.com/coreos/etcd/wal" ) @@ -167,18 +168,28 @@ func startEtcd() { Info: cors, } + l, err := transport.NewListener(*paddr) + if err != nil { + log.Fatal(err) + } + // Start the peer server in a goroutine go func() { log.Print("Listening for peers on ", *paddr) - log.Fatal(http.ListenAndServe(*paddr, ph)) + log.Fatal(http.Serve(l, ph)) }() // Start a client server goroutine for each listen address for _, addr := range *addrs { addr := addr + l, err := transport.NewListener(addr) + if err != nil { + log.Fatal(err) + } + go func() { log.Print("Listening for client requests on ", addr) - log.Fatal(http.ListenAndServe(addr, ch)) + log.Fatal(http.Serve(l, ch)) }() } } @@ -201,9 +212,14 @@ func startProxy() { // Start a proxy server goroutine for each listen address for _, addr := range *addrs { addr := addr + l, err := transport.NewListener(addr) + if err != nil { + log.Fatal(err) + } + go func() { log.Print("Listening for client requests on ", addr) - log.Fatal(http.ListenAndServe(addr, ph)) + log.Fatal(http.Serve(l, ph)) }() } } diff --git a/transport/listener.go b/transport/listener.go new file mode 100644 index 000000000..d73e22d5c --- /dev/null +++ b/transport/listener.go @@ -0,0 +1,9 @@ +package transport + +import ( + "net" +) + +func NewListener(addr string) (net.Listener, error) { + return net.Listen("tcp", addr) +}