refactor(listener) refactor listener related code

Remove duplicate code around creating http listener.
Start to listen incoming http requests just before serving them.
This commit is contained in:
Xiang Li
2014-03-13 15:47:27 -07:00
parent a9d5cc5a50
commit 3ae792b159
4 changed files with 61 additions and 75 deletions

View File

@@ -3,9 +3,35 @@ package server
import (
"crypto/tls"
"net"
"github.com/coreos/etcd/log"
)
func NewListener(addr string) (net.Listener, error) {
// NewListener creates a net.Listener
// If the given scheme is "https", it will generate TLS configuration based on TLSInfo.
// If any error happens, this function will call log.Fatal
func NewListener(scheme, addr string, tlsInfo *TLSInfo) net.Listener {
if scheme == "https" {
cfg, err := tlsInfo.ServerConfig()
if err != nil {
log.Fatal("TLS info error: ", err)
}
l, err := newTLSListener(addr, cfg)
if err != nil {
log.Fatal("Failed to create TLS listener: ", err)
}
return l
}
l, err := newListener(addr)
if err != nil {
log.Fatal("Failed to create listener: ", err)
}
return l
}
func newListener(addr string) (net.Listener, error) {
if addr == "" {
addr = ":http"
}
@@ -16,7 +42,7 @@ func NewListener(addr string) (net.Listener, error) {
return l, nil
}
func NewTLSListener(addr string, cfg *tls.Config) (net.Listener, error) {
func newTLSListener(addr string, cfg *tls.Config) (net.Listener, error) {
if addr == "" {
addr = ":https"
}