From 089021ca6dc4110d27b2e47388ec7d76a646b626 Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Mon, 20 Jan 2014 20:31:09 -0800 Subject: [PATCH] refacotor(transporter): make TLS config explicit --- etcd.go | 5 ++++- server/transporter.go | 12 ++++++------ tests/server_utils.go | 3 +-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/etcd.go b/etcd.go index b56a4bcf5..b167a0576 100644 --- a/etcd.go +++ b/etcd.go @@ -144,7 +144,10 @@ func main() { } // Create Raft transporter and server - raftTransporter := server.NewTransporter(peerTLSConfig.Scheme, peerTLSConfig.Client, followersStats, serverStats, registry, heartbeatTimeout, dialTimeout, responseHeaderTimeout) + raftTransporter := server.NewTransporter(followersStats, serverStats, registry, heartbeatTimeout, dialTimeout, responseHeaderTimeout) + if psConfig.Scheme == "https" { + raftTransporter.SetTLSConfig(peerTLSConfig.Client) + } raftServer, err := raft.NewServer(info.Name, config.DataDir, raftTransporter, store, ps, "") if err != nil { log.Fatal(err) diff --git a/server/transporter.go b/server/transporter.go index 3b0cb6d68..3a04df77c 100644 --- a/server/transporter.go +++ b/server/transporter.go @@ -29,7 +29,7 @@ type dialer func(network, addr string) (net.Conn, error) // Create transporter using by raft server // Create http or https transporter based on // whether the user give the server cert and key -func NewTransporter(scheme string, tlsConf tls.Config, followersStats *raftFollowersStats, serverStats *raftServerStats, registry *Registry, dialTimeout, requestTimeout, responseHeaderTimeout time.Duration) *transporter { +func NewTransporter(followersStats *raftFollowersStats, serverStats *raftServerStats, registry *Registry, dialTimeout, requestTimeout, responseHeaderTimeout time.Duration) *transporter { tr := &http.Transport{ Dial: func(network, addr string) (net.Conn, error) { return net.DialTimeout(network, addr, dialTimeout) @@ -37,11 +37,6 @@ func NewTransporter(scheme string, tlsConf tls.Config, followersStats *raftFollo ResponseHeaderTimeout: responseHeaderTimeout, } - if scheme == "https" { - tr.TLSClientConfig = &tlsConf - tr.DisableCompression = true - } - t := transporter{ client: &http.Client{Transport: tr}, transport: tr, @@ -54,6 +49,11 @@ func NewTransporter(scheme string, tlsConf tls.Config, followersStats *raftFollo return &t } +func (t *transporter) SetTLSConfig(tlsConf tls.Config) { + t.transport.TLSClientConfig = &tlsConf + t.transport.DisableCompression = true +} + // Sends AppendEntries RPCs to a peer when the server is the leader. func (t *transporter) SendAppendEntriesRequest(server raft.Server, peer *raft.Peer, req *raft.AppendEntriesRequest) *raft.AppendEntriesResponse { var b bytes.Buffer diff --git a/tests/server_utils.go b/tests/server_utils.go index 0552e1a03..143ccd7c4 100644 --- a/tests/server_utils.go +++ b/tests/server_utils.go @@ -46,10 +46,9 @@ func RunServer(f func(*server.Server)) { } // Create Raft transporter and server - tls := &server.TLSConfig{Scheme: "http"} dialTimeout := (3 * testHeartbeatTimeout) + testElectionTimeout responseHeaderTimeout := (3 * testHeartbeatTimeout) + testElectionTimeout - raftTransporter := server.NewTransporter(tls.Scheme, tls.Client, followersStats, serverStats, registry, testHeartbeatTimeout, dialTimeout, responseHeaderTimeout) + raftTransporter := server.NewTransporter(followersStats, serverStats, registry, testHeartbeatTimeout, dialTimeout, responseHeaderTimeout) raftServer, err := raft.NewServer(testName, path, raftTransporter, store, ps, "") if err != nil { panic(err)